代码
use std::{
fs::self,
io::self,
};
fn rmdir(path: impl AsRef<std::path::Path>) -> io::Result<()> {
fs::remove_dir(path)
}
错误
error[E0430]: `self` import can only appear once in an import list
--> src/lib.rs:2:5
|
2 | fs::self,
| ^^^^^^^^ can only appear once in an import list
3 | io::self,
| -------- another `self` import appears here
(游乐场(
为什么我不能用两个不同的模块编写module::self
?我想我可以用::self
来use
模块,以明确它们是模块,而不是函数。
如果我添加大括号,它是允许的:
use std::{
fs::{self},
io::{self},
};
这是有充分的理由吗,还是编译器错误/语言设计缺陷?
通常,您希望使用use std::io::{self, BufReader}
来表示导入std::io
和std::io::BufReader
。
use std::{ fs::self, io::self };
只是
use std::{ fs, io };
E0430
是对同一{}
作用域中的两个self
的检查。这就产生了类似的东西
use something::{self, self};
非法。当你把每个::self
都放在自己的范围内时,它是合法的。