目录和模块组织

9 篇文章 1 订阅
6 篇文章 0 订阅

目录和模块组织


提示

所有帖子都会不定期添加补充实战过程中发现的新内容,力争一篇文章涵盖所有内容,避免你多次查找文章,所以最好点赞或收藏,时不时回来看看。


废话

我们写程序,总会分目录和modules,rust里有packages、crates、modules这几个组织关系,
packages: 通过cargo new 创建;
crates: 通过cargo new --lib 创建;
modules: 通过关键字mod定义;
下面以实际例子说说rust里是如何组织目录和模块的,如果觉得代码多不好看明白,可以下载此demo的代码(无积分,需要关注我)

代码文件目录结构

假如我们的程序代码由主程序和一个Lib组成,通过cargo new windows和cargo new --lib hc创建后都放在pro目录下,各自的文件结构目录如下
在这里插入图片描述
为了使用hc这个lib下的文件,需要在windows目录下的Cargo.toml里标明lib位置:

[dependencies]
hc = {version = "1.0", path = "../hc"}

各文件内容依次如下,我尽量把各种相互引用的情况都写在了里面,看不明白的请留言

hc目录下的文件

//文件 hc\src\buttons.rs
use crate::controls;

pub struct Button {
    text: String,
}

pub struct ImageButton {
    button: Button,
}
//文件 hc\src\controls.rs
use crate::buttons::{Button, ImageButton};
//文件 hc\src\lib.rs
pub mod buttons;
pub mod controls;

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {
        assert_eq!(2 + 2, 4);
    }
}

windows目录下的文件,其中mod.rs是用来对外公开其所在目录里的文件(main.rs和lib.rs其实也有这个功能)

//文件 windows\src\api\mod.rs
pub mod write;
pub mod read;
//文件 windows\src\api\read.rs
use write;

pub struct Read {

}
//文件 windows\src\api\write.rs
use super::super::form;
use super::read;  // super表示api

pub struct Write {
    
}

pub mod writebyte {  // 内部的子模块,pub表示对外暴露
    pub struct WriteByte {

    }
}
//文件 windows\src\form.rs
use crate::gdigraphics::{GDICanvas,};

pub struct Form {

}
//文件 windows\src\gdigraphics.rs
use hc::buttons::{Button, ImageButton};

pub struct GDICanvas {

}
//文件 windows\src\main.rs
pub mod form;
mod gdigraphics;
mod api;
use api::write;
use api::write::writebyte;
use self::form::Form;
use crate::gdigraphics::GDICanvas;

fn main() {

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值