在Cargo项目中使用板条箱时出现错误,提示“也许缺少外部板条箱”

Bop*_*psi -1 rust rust-cargo

我今天开始学习Rust,但是在这一步上我陷于困境。我想在项目中使用兰特板条箱,因此我Cargo.toml按照教程中的建议进行了更新:

[package]
name = "guessing_game"
version = "0.1.0"
authors = ["Novice <novice.coder@gmail.com>"]

[dependencies]
rand = "0.3.14"
Run Code Online (Sandbox Code Playgroud)

在我的代码中将其导入为:

use rand::Rng;
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误:

[package]
name = "guessing_game"
version = "0.1.0"
authors = ["Novice <novice.coder@gmail.com>"]

[dependencies]
rand = "0.3.14"
Run Code Online (Sandbox Code Playgroud)

我想念什么吗?


我edition = "2018"按照建议添加:

Cargo.toml:

[package]
name = "guessing_game"
version = "0.1.0"
authors = ["Novice <novice.coder@gmail.com>"]
edition = "2018"

[dependencies]
rand = "0.3.14"
Run Code Online (Sandbox Code Playgroud)

货运量现在可以提供:

use rand::Rng;
Run Code Online (Sandbox Code Playgroud)

我使用更新了rust rustup update,然后将其添加extern crate rand;到main.rs中。现在它正在按预期工作。

该程序运行,但是在我的vscode问题选项卡中,它仍然显示错误-

error[E0432]: unresolved import `rand`
 --> src/main.rs:1:5
  |
1 | use rand::Rng;
  |     ^^^^ maybe a missing `extern crate rand;`?
Run Code Online (Sandbox Code Playgroud)

Lam*_*iry 5

快速的解决方法是添加

edition = "2018"
Run Code Online (Sandbox Code Playgroud)

到您的Cargo.toml上方[dependencies]。

说明

Rust 有两个主要版本:Rust 2015和Rust2018。建议将Rust 2018用于新代码,但是由于Rust需要向后兼容,因此您必须选择使用它。

在Rust 2015中,您必须先编写extern crate语句,然后才能使用之外的任何内容std。这就是错误消息的来源。但是您不必再在Rust 2018中执行此操作,这就是为什么设置版本可以对其进行修复的原因。

Rust 2018还有很​​多变化; 如果您有兴趣,可以在版本指南中阅读有关它们的信息。

  • @Bopsi 如果您安装了以前的版本,您可以通过 rustup update 将 rust 更新到 2018。它现在处于稳定状态,因此在成功更新后您不应收到任何错误。这是[参考](https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html) (2认同)