我正在嘗試使用flate2和tar箱來遍歷.tar.gz
文件的條目,但是出現類型錯誤,我不知道爲什麼。用tar格式解壓文件時沒有方法'entries_mut'?
這裏是我的代碼(是的,我知道我不應該使用.unwrap()
無處不在,這只是POC代碼):
extern crate flate2; // version 0.2.11
extern crate tar; // version 0.3
use std::io::Read;
use std::fs::File;
use flate2::read::GzDecoder;
use tar::Archive;
fn main() {
let file = File::open("/path/to/tarball.tar.gz").unwrap();
let mut decompressed = GzDecoder::new(file).unwrap();
let unarchived = Archive::new(decompressed);
let entries_iter = unarchived.entries_mut();
}
這給我的錯誤error: no method named 'entries_mut' found for type 'tar::Archive<flate2::gz::DecoderReader<std::fs::File>>' in the current scope
。
GzDecoder::new
返回一個DecoderReader<R>
,其中只要R
實現Read
實現Read
,這File
呢,所以這應該是罰款。 Archive<O>
有不同的方法取決於什麼種類O
實現,但在這種情況下,我試圖使用.entries_mut()
,這隻需要O
實施Read
。
顯然我在這裏失去了一些東西,有人可以幫助闡明這一點嗎?