📜  锈模块

📅  最后修改于: 2021-01-08 13:44:39             🧑  作者: Mango

防锈模块

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

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

  • mod关键字: “ mod”关键字声明新模块。
  • pub关键字:默认情况下,所有函数,类型,模块和常量都有一个私有的可见性修饰符。 pub关键字将可见性修改器设置为公共,因此可以在名称空间之外访问它们。
  • use关键字: use关键字用于将模块导入本地范围。

模块定义

该模块由mod关键字定义。

模块的语法:

 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 language
C++ 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 module
b module

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