来自文档
use std::io;
use std::io::Write;
两个使用语句,其中一个是另一个的子路径
这两条路径的共同部分是std::io,这是完整的第一条路径。要将这两个路径合并为一个use语句,我们可以在嵌套路径中使用self,如清单所示
use std::io::{self, Write};
将路径组合为一个使用语句
这一行将std::io
和std::io::Write
引入范围。
如果我把std::io
带到作用域中,那么如果Write是公共项,那么io::Write
在作用域中是否会自动可用?为什么需要单独进口?
如果我完全理解你的问题,我认为你误解了use
语句。
在我看来,你认为use std::io
的声明会把所有公开的东西都从里面带来。但事实并非如此。它只是为std::io
创建一个alias
,就像创建io
一样,所以您可以像在io::Result
或io::Write
中一样使用它。如果你想从中引入所有公共内容,你应该使用std::io::*
,但这是不推荐的,因为它会污染你的命名空间。