Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 116.4MB ·虚拟内存 1372.4MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
可以在路径中使用 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 {
pub fn function() {
println!("called `my::cool::function()`");
}
}
pub fn indirect_call() {
// 让我们从这个作用域中访问所有名为 `function` 的函数!
print!("called `my::indirect_call()`, that\n> ");
// `self` 关键字表示当前的模块作用域——在这个例子是 `my`。
// 调用 `self::function()` 和直接调用 `function()` 都得到相同的结果,
// 因为他们表示相同的函数。
self::function();
function();
// 我们也可以使用 `self` 来访问 `my` 内部的另一个模块:
self::cool::function();
// `super` 关键字表示父作用域(在 `my` 模块外面)。
super::function();
// 这将在 *crate* 作用域内绑定 `cool::function` 。
// 在这个例子中,crate 作用域是最外面的作用域。
{
use crate::cool::function as root_function;
root_function();
}
}
}
fn main() {
my::indirect_call();
}
模块可以分配到文件/目录的层次结构中。让我们将《可见性》一节中的 例子 的代码拆分到多个文件中:$ tree ..|-- my| |-- inaccessible.rs| |-- mod.rs| `-- nested.r ...