我正在尝试从中读取一个字符stdin,但我无法使其正常工作.在不同的程序中,我使用了这个完全相同的方法并且它有效.
let mut buffer = [0];
let _ = std::io::stdin().read(&mut buffer);
let a = buffer[0];
Run Code Online (Sandbox Code Playgroud)
编译它会出现此错误:
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);
Run Code Online (Sandbox Code Playgroud)
Luk*_*odt 20
我假设这befunge.rs不是你的箱子根,而是一个子模块.std::io::stdin()在use ...;声明之外使用的路径是相对于当前模块的,而不是绝对的.要使路径绝对,前缀::(如/在unix路径中作为前缀) - > ::std::io::stdin().或者你可以use在路径的某些部分,例如:
use std;
std::io::stdin();
Run Code Online (Sandbox Code Playgroud)
要么
use std::io;
io::stdin();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用子路径,例如std::io在模块中不止一次,通常最好将use它放在顶部.
如果您位于crate根目录中,则::std和之间没有区别std,因为相对查找路径是根.它只在子模块中很重要.另外:use声明中的路径总是绝对的 - 使它们相对于当前模块前缀self::.
| 归档时间: |
|
| 查看次数: |
5296 次 |
| 最近记录: |