来自文档
use std::io;
use std::io::Write;两条use语句,其中一条是另一条语句的子路径
这两个路径的共同部分是std::io,这就是完整的第一个路径。要将这两个路径合并到一个use语句中,我们可以在嵌套路径中使用self,如清单所示
use std::io::{self, Write};将路径组合到一个use语句中
这一行将std::io和std::io::Write带入作用域。
如果我在作用域中引入了std::io,如果Write是一个公共项,那么io::Write将自动在作用域中可用,这不是很明显吗?为什么需要单独导入?
发布于 2020-04-08 19:57:07
如果我很好地理解了您的问题,我认为您误解了use语句。
在我看来,您认为声明use std::io将带来它内部的所有公共内容。但事实并非如此。它只是为std::io创建一个alias作为io,所以您可以像在io::Result或io::Write中一样使用它。如果你想把所有的公共东西都放在那里,你应该改用std::io::*,但不推荐这样做,因为它会污染你的命名空间。
https://stackoverflow.com/questions/61099035
复制相似问题