什么是模块
刚开始接触Rust的时候很多示例代码都是单文件的,随着学习的深入,单个文件里面的代码量越来越大。
此时就需要将单个文件拆分成多个文件。Rust里面关键字mod可以用来定义一个模块,或者载入一个模块文件。
引入文件
假定,我们拥有如下文件结构:
rustmod
├── Cargo.toml
└── src
    └── main.rs
此时,新建一个文件src/util.rs,加入如下内容:
pub fn hello_mod() {
    println!("{}", "hello mod");
}
此时,就可以在main.rs内使用mod util引入util.rs文件了:
mod util;
fn main() {
    util::hello_mod();
}
以上代码块,使用mod util;载入模块文件,同时在main函数里调用util::hello_mod()函数,需要说明的是,该函数需要使用pub
关键字进行申明。
同级目录相互访问
rustmod
├── Cargo.toml
└── src
    ├── main.rs
    ├── function.rs
    └── util.rs
比如,在编写 function.rs 内代码时,偶尔需要使用到uril.rs里面一些常用的工具函数,该如何操作呢?
// rustmod/src/function.rs
use crate::util;
fn hello_function() {
    util::hello_mod();
}
引用本地crate
假定有如下目录结构:
rustmod
├── Cargo.toml
└── src
    ├── main.rs
    ├── function.rs
    └── util.rs
xxx
├── Cargo.toml
└── src
    └── lib.rs
修改rustmod/Cargo.toml:
[package]
name = "testmod"
version = "0.1.0"
authors = ["Shidong Wang"]
edition = "2018"
[dependencies]
xxx = {path= "../xxx" }
此时,就可以在rustmod/src/main.rs内通过extern crate xxx;来引入xxx,修改main.rs:
extern crate xxx;
use xxx::xxx_func;
fn main() {
    xxx_func();
}