TL;DR

Minimum Supported Rust Version の略。パッケージがサポートする最小の Rust ツールチェーンのバージョンで、Cargo.toml の rust-version で宣言する。

なぜ必要か

サポートされていない古いツールチェーンでビルドしたとき、Cargo が分かりやすいエラーを出せる。宣言がないと、利用者は構文エラーや標準ライブラリの機能不足といった、原因の分かりにくいエラーを受け取ることになる。

仕組み

[package]
rust-version = "1.56"

値は 1.56 のような素のバージョン番号で書き、>= などの演算子やプレリリースの識別子は使えない。Cargo はこの値を次のように使う。

  • ツールチェーンが古ければエラーにする(--ignore-rust-version で回避できる)
  • cargo add は rust-version と互換性のある最新の依存を選ぶ
  • 依存を解決するとき、Rust のバージョンを考慮することがある
  • Clippy の incompatible_msrv などのツールも参照する

注意点

rust-version を上げることは、軽微な非互換の変更とみなされる。セマンティックバージョニングの上でどう扱うかは、クレートによって方針が分かれる。Cargo のドキュメントは、どのバージョンをいつまでサポートするかの方針(たとえば「最新から 2 リリースまで」)を決めて公開し、方針に合わせて rust-version をすぐに更新することを勧めている。

関連

出典