Rust における mod と use の違い
Rust は、安全で同時かつ機能的なシステムプログラミング言語となるように設計された最新の高速プログラミング言語です。2006 年に Mozilla によって作成されました。
Rust には、所有権、借用、および存続期間という 3つの主要な概念があります。Rust は、use
と mod
の 2つのキーワードを使用します。
キーワード use
は、モジュールの内容を現在のスコープにインポートするために使用されます。これは、モジュール内のすべての関数がこの時点から呼び出すことができるようになることを意味します。
一方、mod
は、別のモジュールから現在のスコープに 1つのアイテムのみをインポートするため、今後そのモジュール内の他のアイテムにアクセスできることを心配することなく、必要に応じて呼び出したり参照したりできます。
Rust での use
の概念
別のパスを追求することにより、use
は現在の名前空間に別のアイテムを追加します。アイテムは、関数、構造、特性など、アクセスする必要のある一般的なオブジェクトです。
ルートは、ルートに到達するためにたどる必要のあるモジュール階層です。現在の名前空間とは、オブジェクトを現在のファイルに取り込むことを指します。これにより、オブジェクトがローカルであるかのようにアクセスできます。
Rust での use
の機能
Rust は、ユーザー向けのかなり動的なメカニズムを備えており、最小限の労力で既存の名前空間に多くのオブジェクトを簡単に導入できます。
self
キーワードを使用して、ユニバーサル親モジュールや、名前空間に利用したいその他のものを導入できます。- ID の問題を回避するには、
as
キーワードを使用して変更します。 - glob のような構文を使用して、いくつかのオブジェクトを現在の名前空間に取り込むことができます。
use std::path::{self, Path, PathBuf};
Rust の mod
の概念
モジュールを使用すると、コードを個別のファイルに編成できます。コードを論理的な部分に分割し、他のモジュールやプログラムにインポートして使用できるようにします。
つまり、mod
はモジュールとサブモジュールを指定するために使用され、現在の .rs
ファイルでそれらを使用できるようにします。これは複雑になる可能性があります。使ってみませんか?
Rust のモジュールは、0 個以上のもののコンテナにすぎません。これは、モジュールが簡単にトラバースできるようにアイテムを論理的に整理する方法です。
モジュールを使用してクレートのツリー構造を作成し、必要に応じて作業を複数のファイルに任意の深さで分割できるようにすることができます。1つの .rs
ファイルに複数のモジュールを含めることも、1つのファイルに複数のモジュールを含めることもできます。
最後に、mod
を使用してオブジェクトを論理的にグループ化できます。単一の .rs
ファイルで mod
ブロックを構築するか、ソースコードを複数の .rs
ファイルに分割し、mod
を使用して、Cargo にクレートのツリー構造を生成させることができます。
Rust の mod
と use
の基本的な違い
それらの主な違いは、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 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