使用 VS Code 时如何解决 Rust 中的“未解决的导入”?

Kap*_*aiN 8 rust rust-cargo visual-studio-code

我对 Rust 相当陌生,并且一直在关注他们在其网站上提供的官方书籍。在第二章中,他们告诉你进口“兰德”货物,我照做了。但是,当我尝试直接通过 VS Code 运行代码时,我收到一条错误消息“unresolved import 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"
Run Code Online (Sandbox Code Playgroud)

编辑 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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 8

得到修复!

在 VSC 中,选择“扩展”,选择“Code Runner”扩展,单击小齿轮符号,然后选择“扩展设置”。需要更改的是代码运行器:执行器映射设置。单击“在 settings.json 中编辑”链接。

将以下内容添加到文件中:

"code-runner.executorMap": {
   "rust": "cargo run # $fileName"
}
Run Code Online (Sandbox Code Playgroud)

如果您的 settings.json 文件中已有内容,请记住在上面的行中添加逗号,并将您的编辑内容放在最外面的大括号内,例如

{
    "breadcrumbs.enabled": true,
    "code-runner.clearPreviousOutput": true,
    "code-runner.executorMap": {
        "rust": "cargo run # $fileName"
    }
}
Run Code Online (Sandbox Code Playgroud)

这告诉 Code Runner 使用“cargo run”命令,而不是“rustc”

这个修复来自stackoverflow 上的这个问题