gpt4 book ai didi

rust - 由于多次使用 `use std::{fs::self, io::self}`,无法写入 `self`

转载 作者:行者123 更新时间:2023-12-03 11:35:41 27 4
gpt4 key购买 nike

代码

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

( Playground)

为什么我不能写 module::self有两个不同的模块?我想我可能会 use带有 ::self 的模块说清楚它们是模块,而不是函数。

如果我添加花括号,则允许:
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 s 在同一个 {}范围。
这使得类似
use something::{self, self}; 

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

关于rust - 由于多次使用 `use std::{fs::self, io::self}`,无法写入 `self`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61256985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com