当我尝试初始化一个名为
Alpha
的结构时出现错误,该结构是在另一个文件中定义和实现的。
在
alpha.rs
:
pub struct Alpha {
age: i32
}
impl Alpha {
pub fn new() -> Self {
Alpha { age: 0 }
}
}
在
main.rs
:
mod Alpha;
fn main() {
let alpha = Alpha::new();
}
但是当我尝试编译代码时出现以下错误。
error[E0425]: cannot find function `new` in module `Alpha`
--> src/main.rs:81:24
|
81 | let alpha = Alpha::new();
| ^^^ not found in `Alpha`
对错误有什么想法吗?
我已将结构及其实现放入
main.rs
并且它有效,但不需要将它们放在一起。
Alpha
是模块。它包含 Alpha
结构体,该结构体具有 new()
函数。所以,Alpha::Alpha::new()
。
此外,在 Rust 中,我们用
snake_case
命名模块。如果您这样做并将 mod Alpha;
更改为 mod alpha;
,您也可以在顶部 use alpha::Alpha;
然后引用不合格的 Alpha::new()
。
在 Rust Lang 中,按照惯例,模块名称应以小写或蛇形字母开头。
在 main.rs 中,导入模块时应使用小写名称,如下所示:
mod alpha; // Use lowercase
fn main() {
let alpha = alpha::Alpha::new();
}
这是推荐的目录结构:
project/
├── src/
│ ├── main.rs
│ └── alpha.rs // or a directory named "alpha" with alpha.rs inside