Rust中的模块混淆:同一项目中的main.rs和lib.rs
大家好!我是Rust新手,当项目中同时有`main.rs`和`lib.rs`时,我完全搞不懂模块。
我有这样一个项目:
```
my_project/
├── Cargo.toml
├── src/
│ ├── main.rs
│ └── lib.rs
```
在`lib.rs`中,我声明了一个`utils`模块:
```rust
// lib.rs
mod utils;
pub fn greet() {
println!("Hello from lib!");
}
```
而在`utils.rs`中,我有一个`add`函数:
```rust
// utils.rs
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
```
在`main.rs`中,我尝试调用`lib.rs`中的`greet`函数和`utils`模块中的`add`函数:
```rust
// main.rs
fn main() {
greet(); // 错误
println!("2 + 3 = {}", utils::add(2, 3)); // 也是错误
}
```
编译器报错:"cannot find function `greet` in this scope" 和 "unresolved import `utils`"。我以为如果文件都在同一个`src`文件夹中,它们会自动互相可见。但事实并非如此。请告诉我,当同时有`main.rs`和`lib.rs`时,如何正确组织Rust中的模块。