网站建设在实际工作中的意义住宅和城乡建设部网站
文章目录
- 一、module模块
 - 1.文件内的module
 
- 二、模块化项目结构
 - 1.关于module
 - 2.各个模块之间互相引用
 
- 三、推荐项目结构
 - 1.实例
 
- 参考
 
一、module模块

1.文件内的module
关键字:mod
引入模块中的方法
- usemod名字:方法名
 - usemod名字.*
 - 写全路径
 
二、模块化项目结构
·好处
- 使源代码管理更加方便
 - 更方便读
 
1.关于module
默认是private
组成一个module
- File
 - Directory,需要mod.rs
 
2.各个模块之间互相引用
crate根目录引入
 super相对路径引入
三、推荐项目结构
bin目录
- 把main.rs放入
 
somelib
- 需要修改Cargo.toml
 
[somelib]
name =“somelib"
path=“src/somelib/mod.rs”I  //文件夹
path=“src/somelib/some.rs” //单个文件
 
1.实例
创建一个项目
创建一个库mlib
- 创建单文件translate模块
 - 创建music目录模块
mp3
flac
在flac调用translate模块中的方法
将flac中的music方法暴露出去 

main.rs
fn main() {println!("Hello, world!");mlib::translate::func1();mlib::music::flac::flac();mlib::music::flac::flac_music();mlib::test();mlib::flac_music();
} 
src/mlib/music/flac.rs
pub fn flac() {//方法1 调用外层translate.rs里面的方法super::super::translate::func1();println!("flac");
}pub fn flac_music() {// 方法2crate::translate::func1();println!("flac_music");
} 
src/mlib/music/mod.rs
// 声明出去pub mod flac;
pub mod mp3; 
src/mlib/music/mp3.rs
pub fn mp3() {println!("mp3");
} 
src/mlib/mod.rs
// 暴露模块
pub mod music;
pub mod translate;pub fn test() {println!("test....");
}// 暴露模块中的某个函数
pub use music::flac::flac_music; 
src/mlib/translate.rs
pub fn func1() {println!("Hello,  func1!");
} 
Cargo.toml
[package]
name = "demo"
version = "0.1.0"
edition = "2021"[lib]
name="mlib"
path="src/mlib/mod.rs"[dependencies] 
参考
- Rust项目结构
 
