С помощью reqwest
вы можете получить файл .zip
:
reqwest::get("myfile.zip")
Поскольку reqwest
можно использовать только для извлечения файла, ZipArchive
из ящика zip
можно использовать для его распаковки.Невозможно передать файл .zip
в ZipArchive
, так как ZipArchive::new(reader: R)
требует R
для реализации Read
(что выполняется Response
из reqwest
) и Seek
, что не реализовано Response
.
В качестве обходного пути вы можете использовать временный файл:
copy_to(&mut tmpfile)
Как File
реализует как Seek
, так и Read
, zip
можно использовать здесь:
zip::ZipArchive::new(tmpfile)
Это рабочий пример описанного метода:
extern crate reqwest;
extern crate tempfile;
extern crate zip;
use std::io::Read;
fn main() {
let mut tmpfile = tempfile::tempfile().unwrap();
reqwest::get("myfile.zip").unwrap().copy_to(&mut tmpfile);
let mut zip = zip::ZipArchive::new(tmpfile).unwrap();
println!("{:#?}", zip);
}
tempfile
- удобный ящик, который позволяет вам создать временный файл, так что вам не нужно придумывать имя.