![](/img/trans.png)
[英]How do I import functions from one CoffeeScript file to another?
[英]How do I import functions from subfolders in Rust
我在 src 文件夹中有主要的 main.rs。 main.rs 包含以下内容。
#[allow(dead_code)]
fn main() {
println!("Hello, world!");
hallo();
}
src/lib文件夹下的main.rs目前没有任何内容。
我现在如何使用 src 文件夹中 main.rs 中的 test.rs 中的 function “hello”? test.rs 包含以下内容。
fn hallo(){
println!("hallo");
}
我的文件夹结构如下所示。
| Cargo.lock
| Cargo.toml
|
+---src
| | main.rs
| |
| \---lib
| main.rs
| test.rs
```
这进入 Rust 模块系统。 我会尽力解释它,但是这本书做得更好,所以如果您感到困惑,请先阅读 go 并在此处查看。 基本上,Rust 中的每个文件(除了 main.rs 或 lib.rs)都对应于 crate 中的一个模块(main.rs 和 lib.rs 是 crate 的根)。 该文件中的所有内容都暴露在该模块下。 要创建一个模块,请将这一行添加到其父模块(或 lib.rs 或 main.rs,使其成为 crate 下的子模块):
mod somemod;
然后,您有两个选择:
mod somemod;
的文件相同的文件夹中添加一个名为somemod.rs
的文件; 宣言。 您的文件结构如下所示:|
+---main.rs
+---somemod.rs
mod somemod;
的文件相同的文件夹中添加一个名为somemod
的文件夹; 宣言。 如果您希望somemod
有子模块,则可以使用它; 您将使用与创建顶级模块相同的两个选项来创建子模块。 您的文件结构如下所示:|
+---main.rs
+---somemod
|
+---mod.rs
然后,在那一行之后(以及之前,如果你真的想要的话),你就可以使用somemod
命名空间来引用somemod
模块的任何公共成员:
mod somemod;
// later on ...
somemod::foo();
您还可以使用use
关键字将somemod
的成员带入当前命名空间:
mod somemod;
use somemod::foo;
// later on ...
foo();
因此,在您的情况下,您的代码将如下所示:
main.rs:
mod test;
use test::hallo;
#[allow(dead_code)]
fn main() {
println!("Hello, world!");
hallo();
}
测试.rs:
pub fn hallo() {
println!("hallo");
}
请注意,为了能够从模块外部引用hallo
,我们必须在fn hallo
的 from 中添加pub
关键字。
我正在学习rust-lang
。
这就是我对模块导入的理解。 让你的项目结构像,
---- src /
|
---- main.rs
---- Cargo.lock
---- Cargo.toml
现在您创建了一个名为parent
的文件夹以及main.rs
,例如,
---- src /
|
---- main.rs
---- parent /
|
---- child /
|
---- my_file.rs
---- Cargo.lock
---- Cargo.toml
要从my_file.rs
导入 function my_function
,
第 1 步:创建一个名为lib.rs
的文件和main.rs
第 2 步:在parent
文件夹和child
文件夹中添加空的mod.rs
第 3 步:在lib.rs
添加pub mod parent
第 4 步:在parent
的mod.rs
中,添加pub mod child
第 5 步:在child
的mod.rs
中,添加pub mod my_file
第 6 步:在main.rs
中添加mod parent
第七步:最后通过parent::child::my_file::my_function()
使用
最终的项目结构将是这样的,
---- src /
|
---- main.rs // mod parent
---- lib.rs // pub mod parent
---- parent /
|
---- mod.rs // pub mod child
---- child /
|
---- mod.rs // pub mod my_file
---- my_file.rs
---- Cargo.lock
---- Cargo.toml
希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.