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 をすぐに更新することを勧めている。