如何在查找isn'时通过std::io::Read trait中的数据前进;没有实施?

如何在查找isn'时通过std::io::Read trait中的数据前进;没有实施?,io,rust,Io,Rust,当输出的内容不重要时,从实现std::io::read特性的类型读取的最佳方式是什么 我看到的可能选择是: 在循环中读取单个字节 分配一个潜在的巨大向量并读入其中 介于两者之间的东西。。。在循环中读入固定大小的缓冲区 前两个选项似乎并不理想,第三个还可以,但不方便 Rust是否提供了一种方便的方法来实现这一点?您可以使用,并丢弃特定数量的字节: let mut file = File::open("foo.txt").unwrap(); // Discard 27 bytes io::co

当输出的内容不重要时,从实现
std::io::read
特性的类型读取的最佳方式是什么

我看到的可能选择是:

  • 在循环中读取单个字节
  • 分配一个潜在的巨大向量并读入其中
  • 介于两者之间的东西。。。在循环中读入固定大小的缓冲区
前两个选项似乎并不理想,第三个还可以,但不方便

Rust是否提供了一种方便的方法来实现这一点?

您可以使用,并丢弃特定数量的字节:

let mut file = File::open("foo.txt").unwrap();

// Discard 27 bytes
io::copy(&mut file.by_ref().take(27), &mut io::sink());

// Read the rest
let mut interesting_contents = Vec::new();
file.read_to_end(&mut interesting_contents).unwrap();
()

在这里,我们还必须使用,以便以后仍能使用该文件。

这对我不起作用(
dyn Read
)。在
io::copy(…)
之后,
read(…)
的结果仍然与
io::copy(…)
之前的读取结果相同。为什么?