由于多次使用"self",因此无法写入"use std::{fs::self, io::self}"

  • 本文关键字:self std use fs io 于多次 rust
  • 更新时间 :
  • 英文 :


代码

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?我想我可以用::selfuse模块,以明确它们是模块,而不是函数。

如果我添加大括号,它是允许的:

use std::{
fs::{self},
io::{self},
};

这是有充分的理由吗,还是编译器错误/语言设计缺陷?

通常,您希望使用use std::io::{self, BufReader}来表示导入std::iostd::io::BufReader

use std::{ fs::self, io::self }; 

只是

use std::{ fs, io };

E0430是对同一{}作用域中的两个self的检查。这就产生了类似的东西

use something::{self, self}; 

非法。当你把每个::self都放在自己的范围内时,它是合法的。

最新更新