模块是一个包含函数或函数类型定义的名称空间。模块是项的集合, 例如函数, 结构, 特征, impl块。默认情况下, 模块的修饰符是私有的, 但是可以使用pub关键字用public修饰符覆盖它。
以下是模块中使用的关键字:
- mod关键字:” mod” 关键字声明新模块。
- pub关键字:默认情况下, 所有函数, 类型, 模块和常量都有一个私有的可见性修饰符。 pub关键字将可见性修改器设为公共, 因此可以在名称空间之外访问它们。
- use关键字:use关键字用于将模块导入本地范围。
模块的语法:
mod module_name{// body inside the module. }
一个模块可以通过三种方式进行分类:
1.单个模块:当模块出现在单个文件中时, 称为单个模块。
让我们通过一个例子来理解这一点:
mod a{ pub fn single_module(){println!("Single module");
}}fn main(){a::single_module();
}
输出
Single module
在上面的示例中, 定义了模块” a” , 并且块中定义的每个代码都在名称空间” a” 内部。可以通过使用模块名称, 名称空间和功能名称来调用模块” a” 的功能。
- 我们还可以通过使用单独的文件来完成上述示例:
mod module;
fn main(){module::single_module();
}
pub fn single_module(){ println!("Single module");
}
输出
Single module
在以上两个示例中, 我们检查了mod X是在花括号中还是在单独的文件X.rs或X / mod.rs中定义的。
2.子模块:在一个文件中, 我们可以有多个模块。假设库名称是” 语言” , 并且它由两个模块组成, 即C和Cplus。
下面给出了” 语言” 库的层次结构:
文章图片
让我们通过一个例子来理解:
mod c{pub fn c(){println!("C is a structured programming language");
}}mod cplus{ pub fn cplus() {println!("C++ is an object-oriented programming language");
}}fn main(){c::c();
cplus::cplus();
}
输出
C is a structured programming languageC++ is an object-oriented programming language
在上面的示例中, 该程序由两个模块组成, 即c和cplus, 并且使用c :: c()和cplus :: cplus()调用它们各自的功能。
3.嵌套模块:嵌套模块是由模块内部的模块组成的模块, 在将相关模块组合在一起时很有用。
让我们通过一个例子来理解这一点:
mod a{ pub fn a() {println!("a module");
} pub mod b {pub fn a(){println!("b module");
} }}fn main(){ a::a();
a::b::b();
}
输出
a moduleb module
【Rust模块介绍和用法解释】在以上示例中, 程序由两个模块组成, 即” a” 和” b” , 其中” b” 是” a” 的内部模块。两个模块都包含具有相同名称但具有不同功能的功能。分别使用a :: a()和a :: b :: b()调用这两个函数。它们都属于不同的名称空间, 因此它们不会互相冲突。
推荐阅读
- Rust所有权和内存分析图解
- Rust 模块文件系统解析和用法
- Rust如何引用不同模块中的名称()
- Rust函数如何设置为公有()
- Rust编程语言教程介绍
- Rust错误处理详细图解
- Rust匹配运算符
- Rust枚举控制流if let运算符
- Rust结构更新语法