rust下实现代码的模块化功能拆分的两种形式以及对应的方案。
一、main.rs同级目录下多个rs文件的情况
首先我们的项目结构如下:
.
├── Cargo.lock
├── Cargo.toml
├── src
│ ├── main.rs
│ └── module1.rs
└── target
├── CACHEDIR.TAG
└── debug
其中module1.rs:
//module1.rs
pub fn myfunc1() {
println!("this is func1");
}
如果想在main.rs当中使用其中的函数:
//main.rs
mod module1;//约等于improt module1
use module1::myfunc1;//约等于from module1 import myfunc1
fn main() {
module1::myfunc1();//完整调用
myfunc1();//简洁调用
println!("Hello, world!");
}
与python不同的是,use module1::myfunc1并不能单独使用,必须要经过mod声明。
二、main.rs同级的文件夹形式
项目结构如下:
我们需要将一个newmod的模块拆分为两个module.rs文件。
.
├── Cargo.lock
├── Cargo.toml
├── src
│ ├── main.rs
│ └── newmod
│ ├── module1.rs
│ └── module2.rs
└── target
其中
//module1.rs
pub fn myfunc1() {
println!("this is func1");
}
//module2.rs
pub fn myfunc2() {
println!("this is func2");
}
如果想在main.rs当中使用newmod模块当中的代码,首先要在模块文件夹内新建一个mod.rs:
其中需要对向外导出的模块做声明,相当于python的__init__.py。
//src/newmod/mod.rs
pub mod module1;
pub mod module2;
然后在main.rs当中:
//main.rs
mod newmod;
use newmod::module1;
use crate::newmod::module2;
fn main() {
module1::myfunc1();//完整调用
module2::myfunc2();//完整调用
println!("Hello, world!");
}

1422

被折叠的 条评论
为什么被折叠?



