一般社団法人 全国個人事業主支援協会

COLUMN コラム

クレート

Rustのコンパイルの単位。コンパイラの開始地点となるクレートルートを保持し、
コンパイルすることで関連した機能群を一つのスコープにまとめることが出来る。

パッケージ

ある機能群を提供する1つ以上のクレート。Cargo.tomlでパッケージをどのようにビルドするかを定義する。
0個か1個のライブラリクレートを保持する(2個以上はダメ)。バイナリクレートはいくらでも持っても大丈夫。
ライブラリでもバイナリでも1つ以上のクレートを保持する必要がある。

モジュール

クレート内のコードをグループ化し、コードのプライバシー制御が行える(オブジェクト指向のカプセル化)。modキーワードを宣言し、次にモジュール名を書き、ブロックで囲むことでモジュールを宣言できる。モジュールを内には構造体、enum、定数、関数、モジュールを置くことが出来る。
mod module_1 {
    let five = 5;
    pub fn plus_one(x: u32) -> u32 {
        x += 1;
    }
}
src/main.rs と src/lib.rsは暗黙的にクレートルートと扱われ、crateというモジュール配下にモジュールツリーを形成する。
モジュールツリーを使用する場合、以下の二つのパス型式で使用する。
  • 絶対パス は、クレートの名前かcrateという文字列を使うことで、クレートルートから取得する
  • 相対パス は、self、superまたは今のモジュール内の識別子を使うことで、現在のモジュールから相対的に取得する
絶対パスも相対パスも、ダブルコロンで仕切られる。

use

他言語のfromやimportに当たる機能。モジュールパスをuseで指定するとローカルファイル内に存在するかのように使用できる。
Rustの慣例として、関数は親モジュールまでをuseで引き込み、構造体やenumはフルパスを指定する。pubを付加することで引き込んだパスを公開することも可能。
use crate::module_1::module_2::struct_1;
pub fn function1 {
    struct_1::function2;
}
同じプレフィックスを持っているパスは波カッコでまとめて表記することが可能。
use crate::module_1::{module_2::struct_1, module::3};

as

パスに別名を使用する。そのままエイリアス。把握している範囲だとPythonとかShellsctiptに存在する機能。
use crate::module_1::module_2::struct_1 as st;
pub fn function1 {
    st::function2;
}
The following two tabs change content below.

WATANABE REN

千葉県在住のエンジニアです。最近はPythonやってます。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア