我知道super
可以让您访问“父”范围,但是我偶然发现了 std::io
的这段代码,我不确定它是如何工作的。
pub fn copy<R: ?Sized, W: ?Sized>(reader: &mut R, writer: &mut W) -> io::Result<u64>
where R: Read, W: Write
{
let mut buf = [0; super::DEFAULT_BUF_SIZE];
let mut written = 0;
loop {
let len = match reader.read(&mut buf) {
Ok(0) => return Ok(written),
Ok(len) => len,
Err(ref e) if e.kind() == ErrorKind::Interrupted => continue,
Err(e) => return Err(e),
};
writer.write_all(&buf[..len])?;
written += len as u64;
}
}
它如何访问
super::DEFAULT_BUF_SIZE
?我可以看到它是在sys_common::io
中声明的,但是我看不到该模块如何成为util
模块的父级。 最佳答案
函数 copy
的源位于 util
模块文件 io
导入的 mod.rs
模块中。由于DEFAULT_BUF_SIZE
在mod.rs
中是defined,因此您需要通过super
从util.rs
访问它。
关于rust - 了解Rust中 “super”关键字的特定用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41125006/