さび-モジュール

コードの論理グループはモジュールと呼ばれます。複数のモジュールがと呼ばれるユニットにコンパイルされます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-カーゴビルドとカーゴランの使用

以下に示すように、カーゴビルドとカーゴランを使用してバイナリプロジェクトをビルドし、実行します。