rust - 了解 Rust 中 "super"关键字的具体用法

标签 rust

我知道 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_SIZEdefinedmod.rs 中,您需要通过 util.rs 中的 super 访问它。

关于rust - 了解 Rust 中 "super"关键字的具体用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125006/

相关文章:

date - 如何使用 Chrono crate 在 Rust 中获取当前工作日?

rust - 重新排列id_tree Rust中的同级节点

parsing - Pest 没有像我期望的那样解析递归语法

rust - 创建一个指向另一个的结构

rust - 从 mio::udp::UdpSocket.recv 接收部分 UDP 数据包

vector - 在不改变向量的情况下返回 Rust 中向量的最后 n 个元素

slice - 如何从一个切片创建两个新的可变切片?

rust - 使用 `Into` 特征强制借用

enums - 从没有模式匹配的枚举中读取

vim - 如何将 `RustRun`重定向到Vim中的拆分缓冲区