{"id":13535348,"url":"https://github.com/lifthrasiir/rust-zip","last_synced_at":"2025-12-18T07:31:43.035Z","repository":{"id":17401048,"uuid":"20173647","full_name":"lifthrasiir/rust-zip","owner":"lifthrasiir","description":"A simple rust library for working with ZIP archives","archived":false,"fork":true,"pushed_at":"2015-02-21T12:08:51.000Z","size":409,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-02T08:10:09.701Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"slackito/zip","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lifthrasiir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-26T04:07:59.000Z","updated_at":"2022-01-05T22:12:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lifthrasiir/rust-zip","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifthrasiir%2Frust-zip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifthrasiir%2Frust-zip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifthrasiir%2Frust-zip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lifthrasiir%2Frust-zip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lifthrasiir","download_url":"https://codeload.github.com/lifthrasiir/rust-zip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222788514,"owners_count":17037777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T08:00:54.406Z","updated_at":"2025-12-18T07:31:42.982Z","avatar_url":"https://github.com/lifthrasiir.png","language":"Rust","funding_links":[],"categories":["代码"],"sub_categories":["压缩"],"readme":"# rust-zip [![Build Status](https://travis-ci.org/slackito/zip.svg)](https://travis-ci.org/slackito/zip)\n\nA simple rust library to read and write Zip archives, which is also my pet project for learning Rust.\nAt the moment you can list the files in a Zip archive, as well as extracting them if they are either stored\n(uncompressed) or deflated, but I plan to add write support soon.\n\nA simple example\n----------------\n\n```rust\n#![feature(core, os, io, path)]\n\nextern crate zip;\n\nuse std::os;\nuse std::old_io::File;\nuse zip::ZipReader;\nuse zip::fileinfo::FileInfo;\n\nfn main() {\n    let args = os::args();\n    match args.len(){\n        2 =\u003e list_content(\u0026mut zip_file(\u0026args[1][])),\n        3 =\u003e extract_file(\u0026mut zip_file(\u0026args[1][]), \u0026args[2][]),\n        _ =\u003e print_usage(\u0026args[0][])\n    }\n}\n\nmacro_rules! do_or_die{\n    ($expr:expr) =\u003e (match $expr {\n        Ok(val) =\u003e val,\n        Err(err) =\u003e {println!(\"{}\",err); panic!()}\n    })\n}\n\nfn zip_file(file: \u0026str) -\u003e ZipReader\u003cFile\u003e{\n    do_or_die!(zip::ZipReader::open(\u0026Path::new(file)))\n}\n\nfn output_file(file: \u0026str)-\u003eFile{\n    do_or_die!(File::create(\u0026Path::new(file)))\n}\n\nfn zipped_file_info(zip: \u0026mut ZipReader\u003cFile\u003e, file: \u0026str) -\u003e FileInfo{\n    do_or_die!(zip.info(file))\n}\n\nfn list_content(reader: \u0026mut ZipReader\u003cFile\u003e)-\u003e(){\n    for file in reader.files(){\n        let (year, month, day, hour, minute, second) = file.last_modified_datetime;\n        let mod_time = format!(\"{:04}-{:02}-{:02} {:02}:{:02}:{:02}\", year, month, day, hour, minute, second);\n        println!(\"{} ({}): bytes: {:10}, compressed: {:10}\",\n            file.name, mod_time, file.compressed_size, file.uncompressed_size);\n    }\n}\n\nfn extract_file(zip: \u0026mut ZipReader\u003cFile\u003e, file: \u0026str)-\u003e(){\n    let mut out = output_file(file);\n    let info = zipped_file_info(zip, file);\n    do_or_die!(zip.extract(\u0026info, \u0026mut out));\n}\n\nfn print_usage(this: \u0026str)-\u003e(){\n    println!(\"Usage: {} [file.zip] [file_to_extract]\", this);\n}\n\n```\n\nTODO\n----\n\n- Learn more Rust\n- Write support\n- Create a proper set of tests\n- Support advanced features (more compression methods, ZIP64, encryption, multiple volumes...)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flifthrasiir%2Frust-zip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flifthrasiir%2Frust-zip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flifthrasiir%2Frust-zip/lists"}