Rust 模块

2025年3月17日 | 阅读 3 分钟

模块是一个命名空间,其中包含函数或其类型的定义。 模块是函数的集合,例如函数,结构,特征,impl块。 默认情况下,模块的修饰符是私有的,但是可以使用 pub 关键字通过公共修饰符来覆盖它。

以下是模块中使用的关键字

  • mod 关键字: "mod" 关键字声明新模块。
  • pub 关键字: 默认情况下,所有函数,类型,模块和常量都具有私有可见性修饰符。 pub 关键字使可见性修饰符变为公共的,因此,可以在命名空间外部访问它们。
  • use 关键字: use 关键字用于将模块导入到本地作用域中。

模块定义

模块由 mod 关键字定义。

模块的语法

模块可以分为三种方式

1. 单个模块: 当模块出现在单个文件中时,称为单个模块。

让我们通过一个例子来理解这一点

输出

Single module

在以上示例中,定义了模块“a”,并且在块中定义的每个代码都在命名空间“a”内。 可以通过使用模块名称,后跟命名空间,然后是函数名称来调用模块“a”的函数。

  • 我们还可以通过使用单独的文件来执行上面的示例

输出

Single module

在以上两个示例中,我们研究了mod X 是在花括号中定义的,或者在名为 X.rs 或 X/mod.rs 的单独文件中定义的

2. 子模块: 在单个文件中,我们可以有多个模块。 假设库名称是“language”,它包含两个模块,即 C 和 Cplus。

“language”库的层次结构如下所示


Rust Modules

让我们通过一个例子来理解

输出

C is a structured programming language
C++ is an object-oriented programming language

在以上示例中,该程序由两个模块组成,即 c 和 cplus,它们各自的函数通过使用 c::c() 和 cplus::cplus() 来调用。

3. 嵌套模块: 嵌套模块是那些包含模块内部模块的模块,当相关模块分组在一起时,它们可能会很有用。

让我们通过一个例子来理解这一点

输出

a module
b module

在以上示例中,该程序由两个模块组成,即“a”和“b”,其中“b”是“a”的内部模块。 两个模块都包含具有相同名称但功能不同的函数。 这两个函数分别通过使用 a::a() 和 a::b::b() 来调用。 它们彼此不会冲突,因为它们属于不同的命名空间。


下一个主题Rust 文件系统