【问题标题】:How to resolve "unresolved import" in Rust when using VS Code?使用 VS Code 时如何解决 Rust 中的“未解析导入”?
【发布时间】:2022-03-12 07:46:36
【问题描述】:

我对 rust 还很陌生,并且一直在关注他们在其网站上提供的官方书籍。在第 2 章中,他们告诉您进口我所做的“兰德”货物。但是,当我尝试直接通过 VS Code 运行我的代码时,我收到一条错误消息,提示“未解析的导入 rand”。当我通过命令提示符运行它时,一切正常。我已经尝试过这里建议的所有解决方案:https://github.com/rust-lang/rls-vscode/issues/513,但似乎没有任何效果。我正在使用的扩展:

  • 更好的 TOML
  • 货物
  • 代码运行器
  • 锈(rls)
  • 防锈辅助
  • vsc-rustfmt
  • vscode-rust-syntax

有没有其他人遇到过类似的问题或知道解决方案?谢谢!

编辑:我的 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;
            }
        }
    }
}

【问题讨论】:

  • Cargo.toml的内容是什么?
  • @E_net4theharmedSOmember 编辑了问题
  • 实际导入呢?你能给我们看看代码吗?
  • @E_net4theharmedSOmember 也添加了它
  • 您的 VS Code 工作区是否与您拥有 Cargo.toml(根目录)的文件夹相同?因为如果它是父文件夹,它将不起作用。如果您有嵌套项目,则可能无法在子项目的多个 Cargo.toml 文件中检测已安装的依赖项。

标签: visual-studio-code rust rust-cargo


【解决方案1】:

解决了!

在 VSC 中,选择 Extensions,选择 Code Runner 扩展,单击小齿轮符号并选择 Extension Settings。需要更改的是 Code-runner: Executor Map 设置。点击“在 settings.json 中编辑”链接。

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

"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”

此修复来自 stackoverflow 上的 this question

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2021-02-14
    相关资源
    最近更新 更多