ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Rust之use关键字、* 运算符、super关键字

2021-07-08 11:00:19  阅读:213  来源: 互联网

标签:function use pub 运算符 关键字 println fn mod


当调用模块的函数时,需要指定完整的路径。
通过下面一个例子来理解这个概念:

pub mod a  
{  
  pub mod b  
  {  
    pub mod c  
    {  
      pub fn nested_function()  
      {  
        println!("Nested function");  
      }  
    }  
  }  
 }  

fn main()  
{  
 a::b::c::nested_function();  
}

执行上面示例代码,得到以下结果:

Nested function

在上面的例子中,通过指定完整路径来调用nested_function()函数,即:a::b::c::nested_function()

可以看到这种函数调用方式非常冗长。 Rust中的use关键字缩短了调用函数的长度,使函数的模块在范围内。 use关键字只在范围中指定的那些模块。 通过下面一个例子来理解这一点:

pub mod a  
{  
  pub mod b  
  {  
    pub mod c  
    {  
      pub fn nested_function()  
      {  
        println!("Nested function");  
      }  
    }  
  }  
 }  

use a::b::c::nested_function;  
fn main()  
{  
  nested_function();  
}

执行上面示例代码,得到以下结果:

Nested function

在上面的示例中,use关键字包括范围内的所有模块。 因此,可以直接调用函数,而不必在调用函数时包含模块。

枚举也是类似模块之类的命名空间的一种形式。 因此,可以使用use关键字将枚举变体带入范围中。 在use语句中,可以列出大括号中的枚举变体和最后位置的逗号。

通过下面一个例子来理解:

#[derive(Debug)]  
enum Flagcolor  
{  
 Orange,  
 White,  
 Green,  
}  

use Flagcolor::{Orange,White,Green};  
fn main()  
{  
  let _o= Orange;  
  let _w= White;  
  let _g= Green;  
  println!("{:?}",_o);  
  println!("{:?}",_w);  
  println!("{:?}",_g);  
}

执行上面示例代码,得到以下结果:

orange
white
green

在上面的示例中,Flagcolor是一个名称空间,其变体在use语句中指定。 因此,可以直接使用枚举变体而不使用枚举名称和名称空间说明符。

使用 * 运算符

*运算符用于将所有项目放入范围,这也称为glob运算符。 如果使用glob运算符,那么不需要单独指定枚举变量。
通过下面一个例子来理解这一点:

#[derive(Debug)]  
enum Color  
{  
  Red,  
  Yellow,  
  Green,  
  Orange,  
}  

use Color::*;  
fn main()  
{  
  let _red = Red;  
  let _yellow = Yellow;  
  let _green = Green;  
  let _orange = Orange;  
  println!("{:?}", _red);  
  println!("{:?}", _yellow);   
  println!("{:?}", _green);  
  println!("{:?}", _orange);  
}

执行上面示例代码,得到以下结果:

Red
Yellow
Green
Orange

在上面的示例中,*运算符已用于包含所有枚举变体,而无需在use语句中指定列表。

使用 super 关键字

super关键字用于从当前模块访问父模块,它使能够访问父模块的私有功能。

mod a{  
    fn x() -> u8 {  
        5  
    }  

    pub mod example {  
        use super::x;  

        pub fn foo() {  
            println!("{}",x());  
        }  
    }
}  

fn main()  
{  
  a::example::foo();  
}

输出结果如下:

2

https://www.bootwiki.com/rust/rust-module-use-keyword.html

标签:function,use,pub,运算符,关键字,println,fn,mod
来源: https://blog.csdn.net/yzpbright/article/details/118568062

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有