さび-モジュール
コードの論理グループはモジュールと呼ばれます。複数のモジュールがと呼ばれるユニットにコンパイルされますcrate。Rustプログラムには、バイナリクレートまたはライブラリクレートが含まれている場合があります。バイナリクレートは、main()メソッドを持つ実行可能プロジェクトです。ライブラリクレートは、他のプロジェクトで再利用できるコンポーネントのグループです。バイナリクレートとは異なり、ライブラリクレートにはエントリポイント(main()メソッド)がありません。貨物ツールは、Rustの箱を管理するために使用されます。たとえば、ネットワークモジュールにはネットワーク関連の機能が含まれ、グラフィックモジュールには図面関連の機能が含まれます。モジュールは、他のプログラミング言語の名前空間に似ています。サードパーティのクレートは、crates.ioからの貨物を使用してダウンロードできます。
シニア番号 | 用語と説明 |
---|---|
1 | crate Rustのコンパイルユニットです。クレートはバイナリまたはライブラリにコンパイルされます。 |
2 | cargo 木枠用の公式Rustパッケージ管理ツール。 |
3 | module クレート内のコードを論理的にグループ化します。 |
4 | crates.io 公式のRustパッケージレジストリ。 |
構文
//public module
pub mod a_public_module {
pub fn a_public_function() {
//public function
}
fn a_private_function() {
//private function
}
}
//private module
mod a_private_module {
fn a_private_function() {
}
}
モジュールはパブリックまたはプライベートにすることができます。プライベートモジュール内のコンポーネントには、他のモジュールからアクセスできません。Rustのモジュールはデフォルトでプライベートです。それどころか、パブリックモジュールの関数は他のモジュールからアクセスできます。モジュールには接頭辞を付ける必要がありますpub公開するキーワード。パブリックモジュール内の関数もパブリックにする必要があります。
イラスト:モジュールの定義
例では、パブリックモジュールを定義する-映画を。このモジュールには、パラメーターを受け取り、その値を出力する関数play()が含まれています。
pub mod movies {
pub fn play(name:String) {
println!("Playing movie {}",name);
}
}
fn main(){
movies::play("Herold and Kumar".to_string());
}
出力
Playing movie Herold and Kumar
キーワードを使用する
使用キーワードは、パブリックモジュールをインポートすることができます。
構文
use public_module_name::function_name;
図
pub mod movies {
pub fn play(name:String) {
println!("Playing movie {}",name);
}
}
use movies::play;
fn main(){
play("Herold and Kumar ".to_string());
}
出力
Playing movie Herold and Kumar
ネストされたモジュール
モジュールはネストすることもできます。コメディモジュールを内にネストされた英語の更なるにネストされているモジュール、映画のモジュール。以下の例では、movies / english / comedyモジュール内での関数再生を定義しています。
pub mod movies {
pub mod english {
pub mod comedy {
pub fn play(name:String) {
println!("Playing comedy movie {}",name);
}
}
}
}
use movies::english::comedy::play;
// importing a public module
fn main() {
// short path syntax
play("Herold and Kumar".to_string());
play("The Hangover".to_string());
//full path syntax
movies::english::comedy::play("Airplane!".to_string());
}
出力
Playing comedy movie Herold and Kumar
Playing comedy movie The Hangover
Playing comedy movie Airplane!
イラスト-ライブラリクレートを作成し、バイナリクレートで消費する
名前の付いたライブラリクレートを作成しましょう movie_lib、モジュールが含まれています movies。を構築するにはmovie_lib ライブラリクレート、ツールを使用します cargo。
ステップ1-プロジェクトフォルダを作成する
フォルダーmovie-appを作成し、続いてサブフォルダーmovie-libを作成します。フォルダとサブフォルダを作成したら、srcフォルダとこのディレクトリのCargo.tomlファイル。ソースコードはsrcフォルダにあるはずです。srcフォルダーにlib.rsファイルとmovies.rsファイルを作成します。Cargo.tomlのファイルは、バージョン番号、著者名などのようなプロジェクトのメタデータが含まれています
プロジェクトのディレクトリ構造は以下のようになります-
movie-app
movie-lib/
-->Cargo.toml
-->src/
lib.rs
movies.rs
ステップ2-Cargo.tomlファイルを編集してプロジェクトメタデータを追加します
[package]
name = "movies_lib"
version = "0.1.0"
authors = ["Mohtashim"]
ステップ3-lib.rsファイルを編集します。
このファイルに次のモジュール定義を追加します。
pub mod movies;
上記の行はパブリックモジュールを作成します- movies。
ステップ4-movies.rsファイルを編集する
このファイルは、moviesモジュールのすべての機能を定義します。
pub fn play(name:String){
println!("Playing movie {} :movies-app",name);
}
上記のコードは関数を定義します play() パラメータを受け取り、それをコンソールに出力します。
ステップ5-ライブラリクレートを作成する
を使用してアプリをビルドする cargo buildライブラリクレートが適切に構成されているかどうかを確認するコマンド。プロジェクトのルート、つまりmovie-appフォルダーにいることを確認してください。ビルドが成功すると、ターミナルに次のメッセージが表示されます。
D:\Rust\movie-lib> cargo build
Compiling movies_lib v0.1.0 (file:///D:/Rust/movie-lib)
Finished dev [unoptimized + debuginfo] target(s) in 0.67s
ステップ6-テストアプリケーションを作成する
別のフォルダを作成する movie-lib-testmovie-appフォルダーにあり、Cargo.tomlファイルとsrcフォルダーが続きます。これはバイナリクレートであるため、このプロジェクトにはmainメソッドが必要です。これは、以前に作成されたライブラリクレートを消費します。srcフォルダーにmain.rsファイルを作成します。フォルダ構造は次のようになります。
movie-app
movie-lib
// already completed
movie-lib-test/
-->Cargo.toml
-->src/
main.rs
ステップ7-Cargo.tomlファイルに以下を追加します
[package]
name = "test_for_movie_lib"
version = "0.1.0"
authors = ["Mohtashim"]
[dependencies]
movies_lib = { path = "../movie-lib" }
NOTE−ライブラリフォルダへのパスが依存関係として設定されます。次の図は、両方のプロジェクトの内容を示しています。
ステップ8-main.rsファイルに以下を追加します
extern crate movies_lib;
use movies_lib::movies::play;
fn main() {
println!("inside main of test ");
play("Tutorialspoint".to_string())
}
上記のコードは、movies_libという外部パッケージをインポートします。現在のプロジェクトのCargo.tomlをチェックして、クレート名を確認します。
ステップ9-カーゴビルドとカーゴランの使用
以下に示すように、カーゴビルドとカーゴランを使用してバイナリプロジェクトをビルドし、実行します。