我有一个小项目,当所有代码都在一个大的.rs文件中时,没有任何问题。为了让它更容易使用,我将其拆分成模块,现在项目结构如下:
├── GameState
│ ├── ballstate.rs
│ ├── collidable.rs
│ ├── gamestate.rs
│ ├── mod.rs
│ └── playerstate.rs
├── lib.rs
└── main.rs
在 ballstate.rs
中,我需要使用 rand
模块。这是文件的缩写版本:
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() };
}
}
然而,当我从顶级目录运行cargo build
时,出现以下错误:
GameState/ballstate.rs:42:9: 42:13 错误:未解决的导入
rand::*
。可能是缺少extern crate rand
?
当我只在main.rs文件中有extern crate声明时,它可以工作。现在它在一个单独的模块中有何变化?