使用 VS Code 时如何在 Rust 中解析 "unresolved import"?
How to resolve "unresolved import" in Rust when using VS Code?
我对 Rust 还很陌生,一直在关注他们在其网站上提供的官方书籍。在第 2 章中,他们告诉你进口我做的“兰德”货物。但是,当我尝试通过 VS Code 直接 运行 我的代码时,我收到一条错误消息“未解析的导入 rand
”。当我通过命令提示符 运行 它时,一切正常。我已经尝试了此处建议的所有解决方案:https://github.com/rust-lang/rls-vscode/issues/513,但似乎没有任何效果。我正在使用的扩展程序:
- 更好的 TOML
- 货物
- 代码运行器
- 铁锈 (rls)
- 防锈辅助
- vsc-rustfmt
- vscode-rust 语法
有其他人 运行 遇到类似问题或知道解决方案吗?谢谢!
编辑:我的 Cargo.TOML 看起来像这样:
[package]
name = "guessing_game"
version = "0.1.0"
authors = ["Name <MyNameHere@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = "0.6.0"
编辑 2:我的 main.rs 文件如下所示:
use rand::Rng;
use std::io;
use std::cmp::Ordering;
fn main()
{
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1, 101);
loop
{
println!("Please input your guess!");
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("Failed to read line!");
let guess: u32 = match guess.trim().parse()
{
Ok(num) => num,
Err(_) => continue,
};
println!("Your guess {}", guess);
match guess.cmp(&secret_number)
{
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal =>
{
println!("You win!");
break;
}
}
}
}
已修复!
在 VSC 中,select Extensions,select Code Runner 扩展,点击小齿轮符号和 select Extension Settings。需要更改的是 Code-runner: Executor Map 设置。单击 'Edit in settings.json' link.
将以下内容添加到文件中:
"code-runner.executorMap": {
"rust": "cargo run # $fileName"
}
如果您在 settings.json 文件中已有内容,请记住在上面的行中添加一个逗号并将您的编辑放在最外层的花括号中,例如
{
"breadcrumbs.enabled": true,
"code-runner.clearPreviousOutput": true,
"code-runner.executorMap": {
"rust": "cargo run # $fileName"
}
}
这告诉 Code Runner 使用 'cargo run' 命令,而不是 'rustc'
此修复来自 this question on Whosebug。
我对 Rust 还很陌生,一直在关注他们在其网站上提供的官方书籍。在第 2 章中,他们告诉你进口我做的“兰德”货物。但是,当我尝试通过 VS Code 直接 运行 我的代码时,我收到一条错误消息“未解析的导入 rand
”。当我通过命令提示符 运行 它时,一切正常。我已经尝试了此处建议的所有解决方案:https://github.com/rust-lang/rls-vscode/issues/513,但似乎没有任何效果。我正在使用的扩展程序:
- 更好的 TOML
- 货物
- 代码运行器
- 铁锈 (rls)
- 防锈辅助
- vsc-rustfmt
- vscode-rust 语法
有其他人 运行 遇到类似问题或知道解决方案吗?谢谢!
编辑:我的 Cargo.TOML 看起来像这样:
[package]
name = "guessing_game"
version = "0.1.0"
authors = ["Name <MyNameHere@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = "0.6.0"
编辑 2:我的 main.rs 文件如下所示:
use rand::Rng;
use std::io;
use std::cmp::Ordering;
fn main()
{
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1, 101);
loop
{
println!("Please input your guess!");
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("Failed to read line!");
let guess: u32 = match guess.trim().parse()
{
Ok(num) => num,
Err(_) => continue,
};
println!("Your guess {}", guess);
match guess.cmp(&secret_number)
{
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal =>
{
println!("You win!");
break;
}
}
}
}
已修复!
在 VSC 中,select Extensions,select Code Runner 扩展,点击小齿轮符号和 select Extension Settings。需要更改的是 Code-runner: Executor Map 设置。单击 'Edit in settings.json' link.
将以下内容添加到文件中:
"code-runner.executorMap": {
"rust": "cargo run # $fileName"
}
如果您在 settings.json 文件中已有内容,请记住在上面的行中添加一个逗号并将您的编辑放在最外层的花括号中,例如
{
"breadcrumbs.enabled": true,
"code-runner.clearPreviousOutput": true,
"code-runner.executorMap": {
"rust": "cargo run # $fileName"
}
}
这告诉 Code Runner 使用 'cargo run' 命令,而不是 'rustc'
此修复来自 this question on Whosebug。