rust-stable について
所有権やライフタイム、トレイト、エラー伝播など、Rust の安定版言語仕様を扱う開発者向けスキルです。プロジェクトのツールチェーンと MSRV を確認してから、バージョン依存の構文や API を選ぶ点を重視します。
主な機能
- 01所有権、借用、ライフタイム
- 02トレイト、ジェネリクス、関連型
- 03パターンマッチとエラー伝播
- 04Edition と MSRV の互換性確認
- 05専門的な Rust スキルへの引き継ぎ
活用シーン
- 01借用チェッカーエラーの調査
- 02プロジェクトの MSRV へのコード適合
- 03安定版言語機能の選択検討
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ full-stack-skills/ rust-skills --skill rust-stableインストール後、Claude Code で/rust-stableを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlexamples/collections-patterns.mderror-handling-patterns.mdownership-patterns.mdquickstart-workflows.mdtrait-design-patterns.mdexamples/golden-basic/Cargo.tomlexamples/golden-basic/src/lib.rsreferences/conversions.mderrors.mdfmt.mdfs.mdhashmap.mdinterior-mutability.mdio.mditerators.mdownership-lifetimes.mdpath.mdpatterns.mdrelease-current.mdsmart-pointers.mdstd-index.mdstring.mdstyle-guide.mdtraits-generics.mdvec.md詳細
Rust Stable Language Semantics
所有権、借用、ライフタイム、トレイト、ジェネリクス、パターンマッチ、エラー伝播、Edition の違いなど、言語のセマンティクスについてはこのスキルを使用してください。まず、プロジェクトで実際に使用しているツールチェーンと最小サポート Rust バージョン(MSRV)を確認してください。
標準ライブラリ API の選択(コレクション、スマートポインター、文字列型、I/O トレイトの選択)には、rust-stdlib を使用してください。具体的なパターンの例(「X はどう書けばよいですか」)には、rust-by-example を使用してください。
開始前の前提条件
rustc --version --verboseとcargo --versionを実行します。rust-toolchain.toml、rust-toolchain、Cargo.tomlのrust-versionフィールドを確認します。- 次の 3 つのバージョンを区別します。ローカルのツールチェーン、プロジェクトの MSRV、現在の公式安定版リリース。
- バージョンに依存する API を扱う場合は、現在の安定版の基準を参照し、最終的な根拠として公式のリリースノートと API ドキュメントを使用します。
- プロジェクトが古いバージョンに固定されている場合は、そのバージョンですでに安定化されている構文と API のみを厳守します。
現在のオフライン基準: Rust 1.97.1(2026 年 7 月 16 日リリース)。これは日付が固定されたリポジトリの基準であり、自動更新されません。
対応範囲
対応に適している内容
- 所有権、借用、ライフタイム、ムーブセマンティクス。
struct、enum、パターンマッチ、トレイト、ジェネリクス、関連型。Option、Resultによるエラー伝播、カスタムエラー(言語機能)。- クロージャ(
Fn/FnMut/FnOnce)、属性構文、フォーマット文字列(言語機能)。 - モジュール、可視性修飾子、
pub/pub(crate)/pub(super)。 - Edition の違い(言語レベル —
unsafe extern、RPIT のキャプチャ、match ergonomics)。 - よくあるコンパイルエラー、借用チェッカーの失敗、安定化に関する判断。
専門スキルへの引き継ぎ
| ユーザーの意図 | 推奨スキル |
|---|---|
| 「どの標準ライブラリのコレクション/スマートポインター/文字列型を使えばよいですか?」 | rust-stdlib |
| 「Rust で X はどう書けばよいですか?」(具体的なパターン) | rust-by-example |
| API 設計(命名、トレイト、将来への備え、およそ 100 件の C-* ルール) | rust-api-design |
| プロジェクトのレイアウト、モジュールツリー、ワークスペース構造 | rust-workspace、rust-module-layout |
| Cargo.toml の依存関係、機能、プロファイル、公開 | rust-cargo-build |
| 依存関係のガバナンス、サプライチェーン、cargo-deny | rust-dependencies |
| Semver、破壊的変更の分類、公開ワークフロー | rust-semver |
| Java Maven/Gradle プロジェクトの移行とコンポーネントの置き換え | rust-java-migration |
| Java から Rust へのソースとテストの同等性、Rust での要件、移行テストの監査 | rust-java-migration-testing |
| スレッド、ロック、アトミック、チャネル、Tokio | rust-concurrency |
| 単体テスト、統合テスト、ドキュメントテスト、カバレッジ | rust-testing |
| 生ポインター、メモリレイアウト、FFI、Miri | rust-unsafe-ffi |
| UniFFI で生成する Kotlin、Swift、Python、Ruby、WASM バインディング | rust-uniffi-building |
| macro_rules、derive、手続き型マクロ | rust-macros |
| コマンドの契約、標準ストリーム、終了コード、CLI | rust-cli |
| サーバーサイドの HTTP API、ハンドラー、ミドルウェア | rust-web |
| SQL/ORM、スキーマ、マイグレーション、トランザクション、接続プール | rust-database |
| Web 認証、認可、セッション、トークン | rust-web-security |
| ベアメタルファームウェア、no_std ドライバー、ハードウェア検証 | rust-embedded |
| リスク、正確性、API、安全性のレビュー | rust-code-review |
| rustfmt、Clippy、Edition の移行、Lint ポリシー | rust-style-clippy |
このスキルで、ドメイン固有スキルの完全なワークフローを置き換えないでください。
ワークフロー
- バージョンの境界を特定する — ツールチェーンのバージョン、エディション、MSRV、対象プラットフォームを記録します。
- 問題の範囲を絞り込む — 問題が所有権/型システム/標準ライブラリ/コンパイラーエラーに関するものか、専門分野に関するものかを特定します。
- 必要最小限のリソースを読む — 問題に直接関係する参照資料だけを開き、ドキュメント一式を一度に読み込まないようにします。
- 正しく動作する最小限の解決策を実装する — 安定版の標準ライブラリの利用、明確な所有権の意味、明示的なエラー伝播を優先します。
- 品質ゲートのチェックを実行する —
cargo fmt --check、すべてのターゲット/機能を対象としたcargo check、関連するテストを実行します。 - バージョンの違いに対処する — API が MSRV でサポートされていない場合は、互換性のある古い API を選ぶか、互換性シムを実装します。それ以外の場合は、MSRV を明示的に引き上げます。
- 専門スキルに引き継ぐ — 非同期、unsafe マクロ、Web、組み込みの各分野に入ったら、対応するスキルを読み込みます。
設計ルール
&T/&mut Tを優先します。所有権の移動が必要な場合、または独立したライフタイムが必要な場合に限り、クローンを作成します。- 不変条件を型で表現します。ブール値のパラメーターや制約のない文字列より、列挙型や新しい型を優先します。
- ライブラリコードでは構造化されたエラーを返します。アプリケーションとの境界では、表示方法を決める前にコンテキストを付加してもかまいません。
- イテレーターと標準コレクションを優先しますが、メソッドチェーンの記法のために可読性を犠牲にしないでください。
- 借用チェックを回避するために
unsafeを使わないでください。まず、安全な抽象化では要件を表現できないことを確認します。 - サードパーティークレートのインポートを最初から選ばないでください。安定版の std、MSRV、メンテナンスコスト、サプライチェーンのリスクと比較します。
- 公式リリースノート、または
sinceが記載された API ページで確認できない限り、特定のバージョンで API が安定化されたと断言しないでください。
検証ゲート
リスクの低いものから高いものの順に、検証ゲートを実行します。
cargo fmt --all --check
cargo check --all-targets --all-features
cargo test --all-targets --all-features
cargo clippy --all-targets --all-features -- -D warnings
プロジェクトが --all-features をサポートしていない場合や、プラットフォーム固有のターゲットが含まれている場合は、その理由を記録し、定義済みの機能/ターゲットのマトリックスを使用します。unsafe コードには cargo miri test を追加します。MSRV に関する問題については、宣言された最小ツールチェーンで cargo check とテストを再度実行します。
必要に応じて読むドキュメント
バージョンと言語のセマンティクス
- 現在の安定版ベースライン:最新バージョン、互換性に関する注記、更新手順。
- 所有権とライフタイム:借用の設計、戻り値、ライフタイムの判断ルール。
- トレイトとジェネリクス:境界、関連型、トレイトオブジェクト、API のトレードオフ。
- パターンと慣用的なスタイル:ビルダーパターン、新しい型、RAII、型状態管理。
- スタイルガイド:命名規則、モジュール構成、ドキュメントのスタイル、API 設計の原則。
相互参照(該当するスキルを読み込む)
- 「どの std コレクション/スマートポインター/文字列型を使うべきか?」 →
rust-stdlib(そのreferences/では collections、smart-pointers、string-types、iterators、I/O、interior-mutability、combinators、std-concurrency、process-and-fs、std-module-index を扱います) - 「X をどのように書けばよいか?」 →
rust-by-example(そのreferences/では conversions、flow-control、closures、modules、generics-traits、error-handling、attributes、unsafe、procedural-macros-overview、inline-asm、migrating-from-other-languages を扱います) - API 設計 →
rust-api-design;Cargo マニフェスト →rust-cargo-build;依存関係のガバナンス →rust-dependencies
再現可能な例
- クイックスタートのワークフロー
- 所有権パターン(
examples/ownership-patterns.md) - コレクションパターン(
examples/collections-patterns.md) - トレイト設計パターン(
examples/trait-design-patterns.md) - エラー処理パターン(
examples/error-handling-patterns.md) examples/golden-basic/:リポジトリの CI でコンパイルされる、最小限の模範例。
よくある落とし穴
- 「現行の安定版」とプロジェクトの MSRV を混同すること。
cargo checkだけを実行し、テスト、サンプル、ベンチマーク、または機能の組み合わせを省略すること。- 借用エラーを回避することだけを目的に、安易に
cloneを使ったり、Arc<Mutex<_>>でラップしたり、unsafeを呼び出したりすること。 - 非同期コードで、同期ロックを
.awaitの呼び出しをまたいで保持すること。 - バージョン管理された過去のドキュメントを、継続的に更新されるリソースとして説明すること。
- 依存関係、機能、エラー型、プラットフォームの制約を含めずに、コードスニペットをコピーすること。
公式ソース
データプライバシーポリシー
このスキルは、ローカルの知識、サンプル、検証ワークフローのみを提供します。ユーザーデータを収集、保存、送信することはありません。公式ドキュメントへのアクセスにあたっては、公開リソースにアクセスする前に、ユーザーのネットワークアクセス要件に従う必要があります。