我正在学习Rust。我刚刚掌握了借用系统,但我不知道模块系统是如何工作的。
要导入extern模块,我必须编写extern crate sdl2;
。但是,如果我想导入一个非外部箱子呢?
我知道我可以使用mod
来定义模块,如:
mod foo {
fn bar(length: i32) -> Vec<i32> {
let mut list = vec![];
for i in 0..length + 1 {
if list.len() > 1 {
list.push(&list[-1] + &list[-2]);
} else {
list.push(1);
}
}
list
}
}
并在foo::
的同一文件中使用它,但我如何使用其他文件中的函数/模块?
为了细节,想象一下这个设置:
.
|-- Cargo.lock
|-- Cargo.toml
`-- src
|-- foo.rs
`-- main.rs
所以在 src / foo.rs 中我有:
fn bar(length: i32) -> Vec<i32> {
let mut list = vec![];
for i in 0..length + 1 {
if list.len() > 1 {
list.push(&list[-1] + &list[-2]);
} else {
list.push(1);
}
}
list
}
我想在src/main.rs
中使用它。当我尝试普通use foo::bar
时,我得到:
|
1 | use foo::bar;
| ^^^^^^^^ Maybe a missing `extern crate foo;`?
将函数放入mod foo {...}
时,我得到同样的错误。
如果有关于此主题的帖子,请给我一个链接,因为除了Rust Book之外我什么都没有。
答案 0 :(得分:-1)
将此声明添加到d$id
文件中:
main.rs
其中的行为类似于:
mod foo;
虽然它知道如果没有mod foo { include!("foo.rs") }
个文件,但有一个foo.rs
文件,则要包含该文件。