Rust 编程中的 Super 和 Self 关键字
每当我们想要删除我们想要调用的函数的冗长乏味的导入路径时,无论是从同一个函数还是从不同的模块,我们都可以使用Rust 中提供的super和self关键字。
当我们想要访问项目时,这些关键字有助于消除歧义,并防止对路径进行不必要的硬编码。
示例
考虑如下所示的一个简单示例:
fn function() {println!("called `function()`");
}
mod cool {
pub fn function() {
println!("called `cool::function()`");
}
}
mod my {
fn function() {
println!("called `my::function()`");
}
mod cool {
ub fn function() {
println!("called `my::cool::function()`");
}
}
pub fn my_call() {
// 让我们从此范围访问所有名为“function”的函数!
print!("called `my::my_call()`, that\n> ");
self::function();
function();
// 我们还可以使用 `self` 访问 `my` 中的另一个模块:
self::cool::function();
super::function();
// 这将绑定到 *crate* 作用域中的 `cool::function`。
// 在这种情况下, crate 范围是最外层的范围。
{
use crate::cool::function as root_function;
root_function();
}
}
}
fn main() {
my::my_call();
}
当我们使用self关键字时,它指的是当前模块范围,因此,调用self::function()和function().
当我们在调用函数之前附加super关键字时,我们试图引用父作用域(或另一个模块)。
输出结果
called `my::my_call()`, that> called `my::function()`
called `my::function()`
called `my::cool::function()`
called `function()`
called `cool::function()`
以上是 Rust 编程中的 Super 和 Self 关键字 的全部内容, 来源链接: utcz.com/z/345817.html