# MaguyvaのRust対応: AI支援による変更のための安全なコンテキスト

Canonical source: https://maguyva.ai/ja/languages/rust

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

MaguyvaはAST解析とシンボル抽出によりRustに対応しており、AIエージェントは厳格で安全性を重視したコードを変更する前に、モジュール、implブロック、コンストラクタ、依存関係のパスをナビゲートできます。

## 対応状況スナップショット

- 対応レベル: AST・シンボル対応
- プログラミング
- 拡張子: .rs
- 構文を考慮した検索と構造コンテキストのための実際のAST解析。
- 名前付きシンボルはセマンティック検索と相互参照に利用されます。関係抽出が有効な場合は、グラフナビゲーションも利用できます。
- この言語は、グラフを考慮した検索にシンボルと関係情報を提供します。対応するエッジの種類は、その言語固有の構文要素によって異なります。
- AST解析とシンボル抽出の両方に対応しています。

## 最適な用途

- 正確性と変更の安全性が本当に重要だからこそRustが選ばれている、システム、プラットフォーム、CLIのリポジトリ。
- 所有権に敏感な、あるいは低レベルなロジックを編集する前に、Rustのコードベースを探索するAIの助けを求めるチーム。
- モジュール、生成された型、マクロ、周辺のツール群によって、1ファイルだけを見た推論が当てにならないリポジトリ。

## エージェントワークフロー

- 挙動を変更する前に、構造体やコンポーネントがどこで構築されているかをたどる。
- 新しいものを発明するのではなく、モジュールのパターンや実装の形を比較する。
- エージェントにリファクタリングを頼む前に、ある型やヘルパーに依存しているパスを見つける。

## Rustの変更にオートコンプリート以上のものが必要な理由

Rustは、AIがまず理解し、それから編集すべきであることが最もはっきりしているケースの1つです。この言語は通常、チームが推測に頼った変更の量産を望んでいるからではなく、正確性が重要だからこそ選ばれています。したがって「Rust対応」の基準は高くあるべきです。エージェントはリファクタリングを提案する前に、モジュール境界、implブロック、具体的な型の構築、周辺のコンテキストを理解できるでしょうか?

それこそが本当の価値基準です。構文の生成は面白い部分ではありません。

## MaguyvaがRustで実際に抽出するもの

Maguyvaは、Rustの関数と実装ブロックを別個の構造的概念として捉え、構造体式を実際のインスタンス化として扱います。これにより、単に型が名付けられている場所だけでなく、具体的な型がどこで構築されているかについて、グラフが有用な視点を持てるようになります。

この設定はまた、マクロと標準ライブラリのノイズを大量にフィルタリングします。これはRustにおいて重要です。というのも、マクロを多用したコードは、そうでなければ技術的には有効な呼び出しではあってもリポジトリの挙動を理解しようとする際にはあまり役に立たないもので、グラフを埋め尽くしてしまいかねないからです。

## Rustのリポジトリに役立つMCPワークフロー

最も役立つ出発点のパターンは、次のとおりです。

- `find_symbol` — これから変更しようとしている構造体、列挙型、モジュール所有の関数に対して。
- `dependency_search` — コアとなる型をリファクタリングする前に、どのコードパスがそれに依存しているかを知るために。
- `get_task_context` — 「HTTPクライアント周りのリトライロジックを追跡する」のような概念的なプロンプトで、パスが複数のモジュールにまたがるとき。

## このページが特に関連する場面

Rustを使う価値をもたらしている慎重なワークフローを手放すことなくAI支援を受けたいなら、このページを活用してください。リポジトリがシステム指向というよりサービス指向であれば、[Go](/ja/languages/go)の方が近い比較対象です。Rustがより大きな資産の中の1つの側面にすぎない場合は、[スタックページ](/ja/stack)にある多言語混在の全体像の方が、パーサーのチェックリストよりも重要です。

## エンジンの詳細

- `impl_item` と `function_item` は別々に捕捉されるため、具体的な関数とimplブロックを区別しやすくなります。
- 構造体式はインスタンス化としてカウントされるため、グラフは型が実際に構築された場所を追跡できます。
- マクロや一般的な標準ライブラリのコンストラクタは積極的にフィルタリングされ、関係グラフがリポジトリのコードに集中するようになっています。

## 役立つMCPエントリーポイント

- `find_symbol`: 関心のある構造体、enum、またはモジュール所有の関数から始めて、そこから展開してください。
- `dependency_search`: コアの型やモジュールに触れる前に使用し、ローカルな参照だけでなくinboundの利用状況を確認してください。
- `get_task_context`: リトライロジックやモジュール横断のリソースライフサイクルを追跡するなど、タスクが概念的な場合に便利です。
