模组形成层次结构,使专案变得更容易理解。Rust模组系统用于分割多个档案,使得并非所有内容都位于src/lib.rs
src/main.rs
档案名:
mod A
{
fn a()
{
// block of statements.
}
}
mod B
{
fn b()
{
// block of statements.
}
mod C
{
fn c()
{
// block of statements.
}
}
}
在上面的例子中,程式由三个模组组成,即 是A``B``C``C``B
给定档案的模组层次结构是:
如果模组包含许多函式并且函式非常冗长,则很难找到特定函式的程式码。Rust通过提供模组系统提供了灵活性。可以拥有每个模组的单独档案,而不是放在同一个档案中,即src/lib.rs
要遵循的步骤:
A
mod A;
mod B
{
fn b()
{
// block of statements.
}
mod C
{
fn c()
{
// block of statements.
}
}
}
分号;``A``A
模组A;
mod A
{
fn a()
{
// block of statements.
}
}
现在建立包含模组A定义的外部档案。外部档案的名称将命名为- 建立档案后,在此档案中写入模组A的定义,该档案先前已被删除。
档案名:
fn a()
// block of statements.
在这种情况下,不需要像在 并且,如果在这里编写mod
mod
A
Rust预设情况下会检视src/lib.rs
现在,从档案src/lib.rs
B
B
档案名:
mod A;
mod B;
mod B;
mod B
fn b()
{
// block of statements.
}
mod C
{
fn c()
{
// block of statements.
}
}
现在建立包含模组 外部档案的名称将命名为- 建立档案后,在此档案中写入先前已删除的模组B
src/B.rs
B
档案名:src/B.rs
fn b()
{
// block of statements.
}
mod C
{
fn c()
{
// block of statements.
}
}
现在将从档案src/B.rs
C
C
fn b()
{
// block of statements.
}
mod C;
mod C;
mod C
{
fn c()
{
// block of statements.
}
}
现在建立包含模组 外部档案的名称将命名为 建立档案后,在此档案中写入模组C``src/C.rs``C
档案名称:
fn c()
{
// block of statements.
}
注意:从模组B中提取模组C将导致编译错误,因为 因此,
src/B.rs
src/lib.rs
src/B.rs
src/B/mod.rs
B
模组档案系统规则:
- 如果模组名为「server」且没有子模组,则模组的所有宣告都可以放在档案
server.rs
- 如果名为「server」的模组包含子模组,则模组的所有宣告都将放在档案
server/mod.rs