📅  最后修改于: 2021-01-08 13:45:36             🧑  作者: Mango
模块形成了层次结构,因此项目变得更加易于理解。 Rust模块系统用于拆分多个文件,使得并非所有内容都位于src / lib.rs或src / main.rs文件中。
文件名:src / lib.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.
}
}
}
分号;告诉Rust在定义模块“ A”范围的另一个位置找到模块“ A”的定义。
mod A
{
fn a()
{
// block of statements.
}
}
现在,创建包含模块A定义的外部文件。外部文件的名称将命名为src / A.rs。创建文件后,在此文件中写入模块A的定义,该定义先前已删除。
档案名称:src / A.rs。
fn a()
{
// block of statements.
}
在这种情况下,我们不需要编写src / lib.rs文件中提到的mod声明。并且,如果我们在此处编写mod声明,则它将成为模块A的子模块。
Rust默认情况下会查看src / lib.rs文件,然后此文件确定要进一步查找的文件。
现在,我们将从文件src / lib.rs中提取模块B,并用分号替换模块B的主体。
文件名:src / lib.rs
mod A;
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
{
fn c()
{
// block of statements.
}
}
现在,创建包含模块C定义的外部文件。外部文件的名称将命名为src / C.rs。创建文件后,在此文件中写入模块C的定义,该定义先前已删除。
文件名:src / C.rs
fn c()
{
// block of statements.
}
注意:从模块B提取模块C会导致编译错误,因为src / B.rs与src / lib.rs不同。因此,将src / B.rs移至新目录并重命名为src / B / mod.rs,然后将子模块移至新的“ B”目录。