什么是模块
刚开始接触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();
}