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();
}