Rust 没有方法';条目_mut';将文件与焦油板条箱解除归档时?

Rust 没有方法';条目_mut';将文件与焦油板条箱解除归档时?,rust,Rust,我试图使用和板条箱来迭代.tar.gz文件的条目,但是得到了类型错误,我不知道为什么 这是我的代码(是的,我知道我不应该到处使用.unwrap(),这只是POC代码): 这给了我一个错误错误:在当前作用域中找不到类型为“tar::Archive”的名为“entries\u mut”的方法 GzDecoder::new返回一个DecoderReader,它实现了Read,只要R实现了Read,而File实现了Read,就可以了存档有不同的方法,这取决于O实现了什么样的特征,但在本例中,我尝试使用.

我试图使用和板条箱来迭代
.tar.gz
文件的条目,但是得到了类型错误,我不知道为什么

这是我的代码(是的,我知道我不应该到处使用
.unwrap()
,这只是POC代码):

这给了我一个错误
错误:在当前作用域中找不到类型为“tar::Archive”的名为“entries\u mut”的方法

GzDecoder::new
返回一个
DecoderReader
,它实现了
Read
,只要
R
实现了
Read
,而
File
实现了
Read
,就可以了<代码>存档
有不同的方法,这取决于
O
实现了什么样的特征,但在本例中,我尝试使用
.entries\u mut()
,它只需要
O
来实现
读取


显然,我在这里遗漏了一些东西,有人能帮我解释一下吗?

结果是,
tar rs
发布的文档与
crates.io
上的版本不同,所以我不得不将
条目更改为
文件,还有
let files=
let mut files=

哦,伙计,这很棘手。发布的文档和代码不匹配。在tar版本0.3.2中,该方法称为
files\u mut

extern crate flate2; // version 0.2.11
extern crate tar;    // version 0.3

use std::fs::File;
use flate2::read::GzDecoder;
use tar::Archive;

fn main() {
    let file = File::open("/path/to/tarball.tar.gz").unwrap();
    let decompressed = GzDecoder::new(file).unwrap();
    let mut unarchived = Archive::new(decompressed);
    let _files_iter = unarchived.files_mut();
}
更改了API

这是一个微妙的问题,但目前普遍存在于自我托管的防锈文档中(我自己的板条箱也有同样的问题)。我们在每个主分支上构建文档,但是人们使用稳定的版本。有时这些会不同步

您可以做的最好的事情是在本地项目上运行
cargo doc
cargo doc--open
。这将为您使用的板条箱和版本建立一套文档

extern crate flate2; // version 0.2.11
extern crate tar;    // version 0.3

use std::fs::File;
use flate2::read::GzDecoder;
use tar::Archive;

fn main() {
    let file = File::open("/path/to/tarball.tar.gz").unwrap();
    let decompressed = GzDecoder::new(file).unwrap();
    let mut unarchived = Archive::new(decompressed);
    let _files_iter = unarchived.files_mut();
}