如果您查看文档Read,大多数方法都接受a &mut self.这是有道理的,因为从某物读取通常会更新内部偏移量,因此下一次读取将返回不同的数据.但是,这编译:
use std::io::Read;
use std::fs::File;
fn main() {
let file = File::open("/etc/hosts").unwrap();
let vec = &mut Vec::new();
(&file).read_to_end(vec).unwrap();
println!("{:?}", vec);
}
Run Code Online (Sandbox Code Playgroud)
该文件不可变,但数据肯定被读入.这对我来说似乎不对.有人指出,有一个impl<'a> Read for &'a File,但事实上,一个看似不变的不可变实例似乎仍然很奇怪.