diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 6d03c91..9f62ef9 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -131,7 +131,7 @@ - [Add `IntoIterator` for `Box<[T]>`](rust-2024/intoiterator-box-slice.md) - [Newly unsafe functions](rust-2024/newly-unsafe-functions.md) - [Cargo](rust-2024/cargo.md) - - [Cargo: Rust-version aware resolver](rust-2024/cargo-resolver.md) + - [Cargo: Rustバージョンに基づいたリゾルバ](rust-2024/cargo-resolver.md) - [Cargo: Table and key name consistency](rust-2024/cargo-table-key-names.md) - [Cargo: Reject unused inherited default-features](rust-2024/cargo-inherited-default-features.md) - [Rustdoc](rust-2024/rustdoc.md) diff --git a/src/rust-2024/cargo-resolver.md b/src/rust-2024/cargo-resolver.md index 0090c45..97585a0 100644 --- a/src/rust-2024/cargo-resolver.md +++ b/src/rust-2024/cargo-resolver.md @@ -1,38 +1,93 @@ -> **Rust Edition Guide は現在 Rust 2024 のアップデート作業に向けて翻訳作業中です。本ページはある時点での英語版をコピーしていますが、一部のリンクが動作しない場合や、最新情報が更新されていない場合があります。問題が発生した場合は、[原文(英語版)](https://doc.rust-lang.org/nightly/edition-guide/introduction.html)をご参照ください。** - + + +# Cargo: Rustバージョンに基づいたリゾルバ + +## 概要 + + + +- `Cargo.toml` で `edition = "2024"` を指定すると、`resolver = "3"` が自動的に適用され、Rustバージョンに基づいた依存関係リゾルバが有効になります。 + +## 詳細 + + + +Rust 1.84.0 以降、Cargo では [`package.rust-version`] を考慮した依存関係のバージョン選択を行うオプションが導入されました。 +これを有効にするには、`.cargo/config.toml` に [`resolver.incompatible-rust-version = "fallback"`] の設定を追加します: + + +Rust 2024 Edition から、この設定がデフォルトになります。 +つまり、`Cargo.toml` で `edition = "2024"` を指定すると、自動的に `resolver = "3"` が適用され、 [`resolver.incompatible-rust-version = "fallback"`] が有効になります。 + +このリゾルバは [workspace] に適用されるグローバルな設定であり、依存関係では無視されます。 +この設定は workspace のトップレベルパッケージにのみ適用されます。 +[virtual workspace] を使用している場合、新しいリゾルバを有効にするには [workspace] 定義内で [`resolver` フィールド] を明示的に設定する必要があります。 + + + +Rustバージョン対応の依存関係解決の詳細については、[the Cargo book](https://doc.rust-lang.org/cargo/reference/resolver.html#rust-version) を参照してください。 + + +[`package.rust-version`]: https://doc.rust-lang.org/cargo/reference/rust-version.html +[`resolver.incompatible-rust-version = "fallback"`]: https://doc.rust-lang.org/cargo/reference/config.html#resolverincompatible-rust-versions +[workspace]: https://doc.rust-lang.org/cargo/reference/workspaces.html +[virtual workspace]: https://doc.rust-lang.org/cargo/reference/workspaces.html#virtual-workspace +[`resolver` フィールド]: https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions + +## 移行 + + + +新しいリゾルバへの更新を自動で行うツールはありません。 + + +プロジェクトでは、[CI で最新の依存関係を検証する](https://doc.rust-lang.org/cargo/guide/continuous-integration.html#verifying-latest-dependencies)ことを推奨します。 +これにより、依存クレートのバグを早期に発見し適切に対応できます。 \ No newline at end of file