本文概述
- 使用关键字
- 使用’ *’ 运算符
- 使用超级关键字
让我们通过一个例子来理解这个概念:
pub mod a{pub mod b{pub mod c{pub fn nested_modules(){println!("Nested Modules");
}}} }fn main(){ a::b::c::nested_modules();
}
输出
Nested Modules
在上述示例中, 通过指定完整路径(即a :: b :: c :: nested_modules())来调用nested_modules()函数。
使用关键字在上述情况下, 我们看到函数调用相当长。 Rust的” use关键字” 缩短了将函数的模块带入范围的函数调用的长度。 use关键字仅带来我们在范围中指定的那些模块。让我们通过一个例子来理解这一点:
pub mod a{pub mod b{pub mod c{pub fn nested_modules(){println!("Nested Modules");
}}} }use a::b::c::nested_modules;
fn main(){nested_modules();
}
输出
Nested Modules
在上面的示例中, use关键字将所有模块都包含在范围内。因此, 我们可以直接调用函数, 而无需在调用函数中包含模块。
枚举也是模块等名称空间的一种形式。因此, 我们可以使用use关键字将枚举变量引入范围。在use语句中, 我们可以在大括号中列出枚举变量, 并在最后一个位置列出逗号。
【Rust如何引用不同模块中的名称()】让我们通过一个例子来理解:
#[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);
}
输出
orangewhitegreen
在上面的示例中, 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);
}
输出
RedYellowGreenOrange
在上面的示例中, ” *” 运算符已用于包括所有枚举变量, 而未在use语句中指定列表。
使用超级关键字super关键字用于从当前模块访问祖父母模块。它使我们能够访问父模块的私有功能。
mod a{fn x() ->
u8 {5}pub mod example {use super::x;
pub fn foo() {println!("{}", x());
}}}fn main(){a::example::foo();
}
输出
5
在上面的示例中, 模块示例使用了super, 该super引用了其父模块。由于这个原因, 模块示例的foo()函数可以访问模块a的私有函数。
推荐阅读
- Rust 模块文件系统解析和用法
- Rust函数如何设置为公有()
- Rust编程语言教程介绍
- Rust错误处理详细图解
- Rust匹配运算符
- Rust枚举控制流if let运算符
- Rust结构更新语法
- Android | 教你如何使用HwCameraKit接入相机人像模式
- Maven Java Example Application