大きな.rsファイルにすべて含まれていても問題なしで構築された小さなプロジェクトがあります。私はそれが簡単で動作するようにしたかったので、私は、モジュールにそれを解散し、プロジェクトは次のように構成されています"未解決のインポート - たぶん不足しているextern" extern宣言が存在する場合
├── GameState
│ ├── ballstate.rs
│ ├── collidable.rs
│ ├── gamestate.rs
│ ├── mod.rs
│ └── playerstate.rs
├── lib.rs
└── main.rs
はballstate.rs
では、私はrand
クレートを使用する必要があります。ここでは、ファイルの簡略版です:私は、トップレベルのディレクトリからcargo build
を実行したときに
extern crate rand;
pub struct BallState {
dir: Point,
frame: BoundingBox
}
impl BallState {
fn update_dir(&mut self) {
use rand::*;
let mut rng = rand::thread_rng();
self.dir.x = if rng.gen() { Direction::Forwards.as_float() } else { Direction::Backwards.as_float() };
self.dir.y = if rng.gen() { Direction::Forwards.as_float() } else { Direction::Backwards.as_float() };
}
}
は、しかし、私は次のエラーを取得する:私はちょうど内でexternクレート宣言を持っていた
GameState/ballstate.rs:42:9: 42:13 error: unresolved import
rand::*
. Maybe a missingextern crate rand
?
私main.rsファイル、これはうまくいきました。別のモジュールになった今、変更されたのは何ですか?
これは数時間前に私が到着した答えです。 (そして、この本/チュートリアルのどこにこれが書かれているかを指摘するために、私は質問を投稿する前に実際にそれを読んで、いつも解決策があることに気付かなかった)。私は、コンパイラが間違っていたことを意味するわけではなく、ちょうど1つのファイルシナリオから多くのシナリオに変更されたことを正確に理解できませんでした。 –