RUST模块化/多文件组织结构方案

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!");
}

三、参考链接

Rust 中的包的使用,以及将包分为多个文件模块 - 小土坡 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值