クレートとモジュール――Rustのモジュールシステムを理解する基本からしっかり学ぶRust入門(12)

Rustについて基本からしっかり学んでいく本連載。第12回は、Rustアプリケーションを構成するクレートやパッケージ、関数等の要素に論理的な階層構造を導入するモジュールについて。

» 2022年06月24日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「基礎からしっかり学ぶRust入門」のインデックス

連載:基礎からしっかり学ぶRust入門

 本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。具体的な利用方法は連載第1回を参考にしてください。


 本連載で紹介してきたRustのサンプルコードは基本的に1つのソースファイルで完結していたので、ソースファイルを1つ作成→コンパイル→実行、という流れで何の問題もありませんでした。しかし、アプリケーションの規模が大きくなり、構成するソースファイルも増えてきて、ライブラリなども作成するとなってくると、これらをまとめて整理する仕組みが必要になります。それがモジュールシステムです。今回は、以下の表と図に示すRustのモジュールシステムの各要素を紹介します。

要素 概要
パッケージ Cargoパッケージマネージャで管理されるクレートの集合
クレート パッケージ内の個々の実行バイナリとライブラリ
モジュール 関数などの要素の論理的な階層
パス 関数などの要素やモジュールの論理的な場所を示す名前
表 モジュールシステムの各要素
モジュールシステムの各要素

パッケージ

 パッケージとクレートは、アプリケーションを物理的に構成する要素です。パッケージ(package)は小包とか包み箱という意味で、1個以上のクレート(後述。ここでは単純にソースファイルと思ってください)をまとめたものをいいます。通常、パッケージはRustの備えるCargoパッケージマネージャ(以降、Cargo)によって作成され、ビルド、テストの対象となります。

 Cargoの実体であるcargoコマンドによるパッケージの作成については、第1回で紹介しました。そこでも触れたように、パッケージではCargoの管理ファイルであるCargo.tomlによってアプリケーションの属性を指定するほか、ビルドの方法が管理されます。

 本連載のサンプルのような学習用のアプリケーションであれば、Cargo.tomlファイルを触る機会はほとんどありません。ただし、広く配布するアプリケーションであれば正しくバージョン情報を設定する必要がありますし、複数のパッケージからなるアプリケーションを作成する場合には、Cargo.tomlファイルを積極的に触っていくことになります。

 クレートはソースファイルなので、Rustのコンパイラであるrustcで個別にコンパイルすることは可能です。ただし、複数のファイルでアプリケーションが構成されたり、簡便にテストを実行したり、アプリケーションを配布したりするには、パッケージを利用した方が便利です。rustcはCargoから間接的に呼び出すことにして、通常はcargoコマンドによるパッケージ管理の機能を利用しましょう。

クレート

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。