Rust エコシステム

Rust エコシステムは多数のツールで構成されており、主なものは次のとおりです:

  • rustc: .rs ファイルをバイナリやその他の中間形式に変換する Rust コンパイラ。

  • cargo: Rust の依存関係マネージャー兼ビルドツール。Cargo は、 通常 https://crates.io でホストされている依存関係をダウンロードでき、 プロジェクトをビルドするときにそれらを rustc に渡します。Cargo には 組み込みのテストランナーも含まれており、ユニットテストの実行に使われます。

  • rustup: Rust ツールチェーンのインストーラー兼アップデーター。このツールは、 新しい Rust のバージョンがリリースされたときに rustccargo を インストールおよび更新するために使用されます。さらに、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 を参照してください