Использование ящика в грузовом проекте с ошибками «возможно, отсутствующий внешний ящик» - PullRequest
0 голосов
/ 31 декабря 2018

Я начал изучать Rust сегодня, но застрял на этом шаге .Я хочу использовать rand crate в своем проекте, поэтому я обновил свой Cargo.toml, как предложено в руководстве:

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

[dependencies]
rand = "0.3.14"

Импортируя его в мой код как:

use rand::Rng;

Это даетэта ошибка:

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

Я что-то упустил?


Я добавил 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"

Сборка грузов теперь дает:

$ cargo build --verbose
   Fresh libc v0.2.45
   Fresh rand v0.4.3
   Fresh rand v0.3.22
 Compiling guessing_game v0.1.0 (/home/bappaditya/projects/guessing_game)
 Running `rustc --edition=2018 --crate-name guessing_game src/main.rs --color always --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=4d1c2d587c45b4
c6 -C extra-filename=-4d1c2d587c45b4c6 --out-dir 
/home/bappaditya/projects/guessing_game/target/debug/deps -C 
incremental=/home/bappaditya/projects/guessing_game/target
/debug/incremental -L 
dependency=/home/bappaditya/projects/guessing_game/target/debug/deps -- 
extern rand=/home/bappaditya/projects/guessing_game/target/debug/deps/libra
nd-78fc4b142cc921d4.rlib`
error: Edition 2018 is unstable and only available for nightly builds of rustc.

Я обновил ржавчину, используя 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;`?

1 Ответ

0 голосов
/ 31 декабря 2018

Быстрое решение состоит в том, чтобы добавить

edition = "2018"

к вашему Cargo.toml над [dependencies].

Объяснение

Существует два основных редакции Rust: Rust 2015 и Rust 2018. Rust 2018 рекомендуется для нового кода, но поскольку Rust должен иметь обратную совместимость, вы должны включить его.

В Rust 2015,Вы должны были написать оператор extern crate, прежде чем использовать что-либо за пределами std.Вот откуда приходит сообщение об ошибке.Но вам больше не нужно делать это в Rust 2018, поэтому установка редакции исправляет это.

В Rust 2018 есть еще много изменений;если вы заинтересованы, вы можете прочитать о них в руководстве по выпуску .

...