当前位置: 首页 > article >正文

【Rust自学】7.6. 将模块拆分为不同文件

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)

7.6.1. 将模块的内容移动到其他文件

如果在模块定义时模块名后边跟的是;而不是代码块,Rust就会在src目录下找与模块同名的.rs文件加载其中的内容。无论模块的内容是在同一个文件里面还是在不同的文件里面,模块树的结构都不会发生变化。

来看一个例子:

mod front_of_house {  
    pub mod hosting {  
        pub fn add_to_waitlist() { }  
    }  
}  
 
pub use crate::front_of_house::hosting::add_to_waitlist;  
  
pub fn eat_at_restaurant() {  
    add_to_waitlist();  
}

这样写就是把所有模块放在同一个文件里。如果要把它放在不同的文件里,就要这么写:

Step 1:新建文件

假如要把front_of_house分出去,就需要在src目录下创建同名的.rs文件:
请添加图片描述

Step 2:剪切代码

把原本在front_of_house下的代码从原位置剪切到这个front_of_house.rs这个文件里,也就是把这一段剪切走:

pub mod hosting {  
        pub fn add_to_waitlist() { }  
    }

请添加图片描述

Step 3:修改原处

打开front_of_house所在的原处,这个时候就不用后面的代码块了,把它连着{}都删去,加上;即可(其它的无关代码不要动),原本代码是:

mod front_of_house {  
    pub mod hosting {  
        pub fn add_to_waitlist() { }  
    }  
}  
 
pub use crate::front_of_house::hosting::add_to_waitlist;  
  
pub fn eat_at_restaurant() {  
    add_to_waitlist();  
}

改成:

mod front_of_house;
 
pub use crate::front_of_house::hosting::add_to_waitlist;  
  
pub fn eat_at_restaurant() {  
    add_to_waitlist();  
}

请添加图片描述

7.6.2. 子模块的拆分

需要注意的是,如果想把模块下的子模块拆出来,就需要新建父模块的同名文件夹,在这个文件下方.rs文件用于存储子模块或是条目。

举个例子,如果我要把hosting独立出去成一个单独的文件,操作不仅仅是创建一个同名.rs文件,而是需要先新建一个父模块的同名文件夹,在这个例子中父模块的名字是front_of_house,所以就要创建名字为front_of_house的文件夹。

然后再在这个文件夹下创建与条目名/模块名相同的.rs文件,在这个例子中是要把hosting独立出去,所以这个文件应该叫做hosting.rs
请添加图片描述

hosting.rs里存储hosting的内容,也就是:

pub mod hosting {  
    pub fn add_to_waitlist() { }  
}

请添加图片描述

如果不想要同名的文件和文件夹,可以把文件放进文件夹并把文件改名为mod.rs!!!

7.6.3. 拆分的优点

随着模块变大,该技术让程序员可以把模块的内容移动到其他文件中。


http://www.kler.cn/a/458184.html

相关文章:

  • Spring Boot 学习笔记
  • Hive之import和export使用详解
  • linux学习笔记(一).学习路径+学习流程+起源
  • AIDD -人工智能药物设计 -蛋白质柔性的预测
  • windows C#-使用集合初始值设定项初始化字典
  • 基于FPGA的温度控制系统设计(论文+源码)
  • BUUCTF Pwn ciscn_2019_es_2 WP
  • dl笔记:MOE
  • 人工智能知识分享第三天-机器学习中交叉验证和网格搜索
  • uniapp不能直接修改props的数据原理浅析
  • 《Virt A Mate(VAM)》免安装豪华版v1.22中文汉化整合
  • Nacos配置管理+共享配置、配置热更新
  • [Unity Shader][Unity Shader][图形渲染]Shader数学基础19-选择使用3×3或4×4变换矩阵的技巧
  • 音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息
  • 设计宝藏解压密码
  • 单片机优先级
  • Java实现简单爬虫——爬取疫情数据
  • 定义Shape:打造属于你的独特图形
  • YOLOv10目标检测-训练自己的数据
  • LAION-SG:一个大规模、高质量的场景图结构注释数据集,为图像-文本模型训练带来了革命性的进步。