Rust エコシステム
Rust エコシステムは多数のツールで構成されており、主なものは次のとおりです:
-
rustc:.rsファイルをバイナリやその他の中間形式に変換する Rust コンパイラ。 -
cargo: Rust の依存関係マネージャー兼ビルドツール。Cargo は、 通常 https://crates.io でホストされている依存関係をダウンロードでき、 プロジェクトをビルドするときにそれらをrustcに渡します。Cargo には 組み込みのテストランナーも含まれており、ユニットテストの実行に使われます。 -
rustup: Rust ツールチェーンのインストーラー兼アップデーター。このツールは、 新しい Rust のバージョンがリリースされたときにrustcとcargoを インストールおよび更新するために使用されます。さらに、rustupは標準 ライブラリのドキュメントもダウンロードできます。複数の Rust バージョンを 同時にインストールしておくことができ、rustupを使って必要に応じて それらを切り替えられます。
重要なポイント:
-
Rust は6週間ごとに新しいリリースが出るという迅速なリリースサイクルを 採用しています。新しいリリースは古いリリースとの後方互換性を維持します — さらに、新しい機能も利用可能にします。
-
リリースチャネルは “stable”、“beta”、“nightly” の3つです。
-
新機能は “nightly” でテストされ、“beta” は6週間ごとに “stable” に なるものです。
-
依存関係は、代替の registries、git、フォルダーなどから解決することも できます。
-
Rust には editions もあります。現在のエディションは Rust 2024 です。 以前のエディションは Rust 2015、Rust 2018、Rust 2021 でした。
-
エディションでは、言語に後方互換性のない変更を加えることが認められて います。
-
コードが壊れるのを防ぐため、エディションはオプトイン方式です:
Cargo.tomlファイルを通じて、crate に使用するエディションを選択します。 -
エコシステムの分断を避けるため、Rust コンパイラは異なるエディション向けに 書かれたコードを混在させることができます。
-
コンパイラを
cargoを介さずに直接使うことはかなりまれであること (ほとんどのユーザーは一度もそうしないこと)にも触れてください。 -
Cargo 自体が非常に強力で包括的なツールであることに触れるのもよいでしょう。 Cargo は、次のようなものを含む多くの高度な機能を備えています:
- プロジェクト/パッケージ構造
- workspaces(ワークスペース)
- 開発依存関係および実行時依存関係の管理/キャッシュ
- build scripting(ビルドスクリプト)
- global installation
- また、サブコマンドプラグインによる拡張も可能です(たとえば cargo clippy)。
-
詳しくは official Cargo Book を参照してください
-