Rust 为什么“std”模块未声明?

Rust 为什么“std”模块未声明?,rust,Rust,我正试图从stdin中读取一个字符,但无法正常工作。在不同的程序中,我使用了完全相同的方法,并且效果很好 let mut buffer = [0]; let _ = std::io::stdin().read(&mut buffer); let a = buffer[0]; 编译时会出现以下错误: src/befunge.rs:220:17: 220:31 error: failed to resolve. Use of undeclared type or module `std::

我正试图从
stdin
中读取一个字符,但无法正常工作。在不同的程序中,我使用了完全相同的方法,并且效果很好

let mut buffer = [0];
let _ = std::io::stdin().read(&mut buffer);
let a = buffer[0];
编译时会出现以下错误:

src/befunge.rs:220:17: 220:31 error: failed to resolve. Use of undeclared type or module `std::io` [E0433]
src/befunge.rs:220      let _ = std::io::stdin().read(&mut buffer);

我假设
befunge.rs
不是您的板条箱根,而是一个子模块。像
std::io::stdin()
这样的路径在
使用之外使用声明是相对于当前模块的,而不是绝对的。要使路径成为绝对路径,前缀
::
(就像unix路径中的前缀
/
)->
::std::io::stdin()
。或者,您可以
使用路径的某些部分,如:

use std;
std::io::stdin();

如果在模块中多次使用子路径,如
std::io
,通常最好在顶部使用它


如果您在板条箱根目录中,则
::std
std
之间没有区别,因为相对查找路径是根目录。它只在子模块中起作用。另外:
use
声明中的路径总是绝对的——为了使它们相对于当前模块前缀
self::

我有一个新问题,这些解决方案无法解决。我编辑了主要帖子。请每个帖子只问一个问题。因此,理论上你应该为你的编辑创建一个单独的问题。但是:这个问题已经得到了回答,所以最好搜索一下。扰流器:只需阅读编译器的全部错误信息(包括注释)。我们是否有理由使“使用”不同,这是绝对的,而不是与当前模块相关的?在询问有关问题时,如果可能,请提供答案,以便客观地检查答案以解决问题。例如,这可能是。
use std::io;
io::stdin();