模块
// 兄弟模块
mod network {
fn connect() {
}
}
mod client {
fn connect() {
}
}
// 父子模块
mod network {
fn connect() {
}
mod client {
fn connect() {
}
}
}
// 同一个文件
// src/lib.rs
mod client {
fn connect() {
}
}
mod network {
fn connect() {
}
mod server {
fn connect() {
}
}
}
// 两个文件
// src/lib.rs
mod client;
mod network {
fn connect() {
}
mod server {
fn connect() {
}
}
}
// client.rs
fn connect() {
}
// 三个文件
// src/lib.rs
mod client;
mod network;
// src/network.rs
fn connect() {
}
mod server {
fn connect() {
}
}
// 四个文件
// src/network/mod.rs
fn connect() {
}
mod server;
// src/network/server.rs
fn connect() {
}
- 如果模块 foo 没有子模块,在 foo.rs 中放置该模块。
- 如果模块 foo 有子模块,在 foo/mod.rs 中放置该模块。
- 模块必须在其父模块的文件中使用 mod 声明。
可见性
// 二进制箱(binary crate)
// src/main.rs(根模块)
extern crate communicator;
fn main() {
communicator::client::connect();
}
// 库箱(library crate)
// src/lib.rs(根模块)
pub mod client;
// src/client.rs
pub fn connect() {
}