Rust 中 Mod 和 Use 的区别

Muhammad Adil 2023年1月30日 2022年6月15日
  1. Rust 中的 use 概念
  2. Rust 中的 mod 概念
  3. Rust 中 moduse 的基本区别
Rust 中 Mod 和 Use 的区别

Rust 是一种现代且快速的编程语言,旨在成为一种安全、并发和功能性的系统编程语言。它由 Mozilla 于 2006 年创建。

Rust 有三个主要概念:所有权、借用和生命周期。Rust 使用两个关键字:usemod

关键字 use 用于将模块的内容导入当前范围。这意味着它将使模块中的所有函数都可以从此时开始调用。

另一方面,mod 仅将另一个模块中的单个项目导入当前范围,因此可以根据需要调用或引用它,而不必担心从现在开始可以访问该模块中的任何其他内容。

Rust 中的 use 概念

通过追求不同的路径,use 将另一个项目添加到当前命名空间。项是你需要访问的通用对象,例如函数、结构或特征。

路线是你必须遵循的模块层次结构才能到达它。当前命名空间是指将对象带入当前文件,以便你可以像访问本地一样访问它。

Rust 中 use 的特点

Rust 为用户提供了一种相当动态的机制,可以轻松地将许多对象引入现有的命名空间,而无需付出任何努力。

  1. 你可以使用 self 关键字将通用父模块和你想要使用的任何其他东西引入命名空间。
  2. 为避免身份问题,请使用 as 关键字进行更改。
  3. 你可以使用类似 glob 的语法将多个对象带入当前命名空间:
use std::path::{self, Path, PathBuf};

Rust 中的 mod 概念

模块允许你将代码组织到单独的文件中。它们将你的代码划分为可以在其他模块或程序中导入和使用的逻辑部分。

简而言之,mod 用于指定模块和子模块,以便你可以在当前的 .rs 文件中使用它们,这可能很复杂。为什么不直接使用它?

Rust 中的模块只不过是零个或多个事物的容器。这是一种逻辑组织项目的方法,因此你的模块可以轻松遍历。

模块可用于创建 crate 的树结构,使你能够在必要时将工作拆分到任意深度的多个文件中。单个 .rs 文件可以包含多个模块,或者单个文件可以包含多个模块。

最后,你可以使用 mod 对对象进行逻辑分组。你可以在单个 .rs 文件中构建 mod 块,或者你可以将源代码划分为多个 .rs 文件,使用 mod,并让 Cargo 生成你的 crate 的树结构。

Rust 中 moduse 的基本区别

它们之间的主要区别在于 use 从外部库导入模块,而 mod 创建只能在当前文件中使用的内部模块。

让我们讨论一个使用 use 关键字的示例。

use hello::rota::function as my_function;
fn function() {
    println!("demo `function()`");
}
mod hello {
    pub mod rota {
        pub fn function() {
            println!("demo `hello::rota`");
        }
    }
}
fn main() {
    my_function();

    println!("Coming");
    {
        use crate::hello::rota::function;
        function();
        println!("Returning");
    }
    function();
}

输出:

demo `hello::rota`
Coming
demo `hello::rota`
Returning
demo `function()`

点击这里查看上述代码的演示。

Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook