📦
Rust 1.84からRustの最小バージョンを考慮した依存関係の解決ができるようになった
Rust 1.84でRustの最小バージョン(MSRV)を考慮するリゾルバが安定化されました。
これによって、cargo add
で間接的に追加されるクレートのMSRVが考慮されるようになったり、cargo update
でrust-version
フィールドで指定されているRustのバージョンと互換性のあるバージョンのクレートが自動的に選択されるようになります。
cargo add clap
MSRVを考慮した依存関係の解決
MSRVを考慮しない依存関係の解決
cargo update
MSRVを考慮した依存関係の解決
MSRVを考慮しない依存関係の解決
MSRVは(間接的に)依存するクレートでrust-version
フィールドが定義されている場合に考慮されます。
このフィールドが定義されていない依存するクレートではMSRVを考慮した依存関係の解決は行われません。
設定方法
MSRVを考慮した依存関係の解決は.cargo/config.toml
で次のように設定することで有効になります。
.cargo/config.toml
[resolver]
incompatible-rust-versions = "fallback"
また、Cargo.toml
で次のように設定することでも有効になります。
Cargo.toml
[package]
# ...
resolver = "3"
なお、Rust 1.85で安定化予定のRust 2024からはpackage.resolver = "3"
がデフォルトで有効になるので、上記の設定をしなくてもMSRVを考慮した依存関係の解決が行われます。
終わりに
今まではcargo update
を実行するとMSRVの互換性のないクレートが選択されて困っていましたが、MSRVを考慮するリゾルバが安定化されたことでこの問題が解決するので個人的に非常に助かります。
Discussion