外部の rustc_driver
rustc_private
概要
rustc_private 機能により、外部クレートがコンパイラー内部を使用できるようになります。
公式ツールチェーンで rustc_private を使用する
rustup 経由で配布されている公式 Rust ツールチェーンで rustc_private 機能を使用する場合は、追加で 2 つのコンポーネントをインストールする必要があります。
rustc-dev: コンパイラーライブラリを提供しますllvm-tools: リンクに必要な LLVM ライブラリを提供します
インストール手順
rustup を使用して両方のコンポーネントをインストールします。
rustup component add rustc-dev llvm-tools
よくあるエラー
llvm-tools コンポーネントがない場合、次のようなリンクエラーが発生します。
error: linking with `cc` failed: exit status: 1
|
= note: rust-lld: error: unable to find library -lLLVM-{version}
カスタムツールチェーンで rustc-private を使用する
カスタムビルドしたツールチェーンや rustup を使用していない環境では、通常、追加の設定が必要です。
要件
- LLVM ライブラリがシステムのライブラリ検索パスで利用可能である必要があります
- LLVM のバージョンは Rust ツールチェーンのビルドに使用されたものと一致している必要があります
トラブルシューティング手順
- LLVM がインストールされ、アクセス可能であることを確認します
- ライブラリパスが設定されていることを確認します。
export LD_LIBRARY_PATH=/path/to/llvm/lib:$LD_LIBRARY_PATH - LLVM のバージョンが Rust ツールチェーンと互換性があることを確認します
ツリー外プロジェクト向けに rust-analyzer を設定する
rustc_private クレートを使用するツリー外プロジェクトを開発している場合、これらのクレートを認識するように rust-analyzer を設定できます。
設定手順
-
エディター設定で
rust-analyzer.rustc.sourceを"discover"に設定します。VS Code の場合は、
rust_analyzer_settings.jsonに次を追加します。{ "rust-analyzer.rustc.source": "discover" } -
rustc_privateを使用するすべてのクレートのCargo.tomlに次を追加します。[package.metadata.rust-analyzer] rustc_private = true
この設定により、rust-analyzer はツリー外プロジェクト内の rustc_private クレートを適切に認識し、IDE サポートを提供できます。
rustc_private の nightly ドキュメントを取得する
最新の nightly
最新の nightly では、rustc-docs コンポーネントをインストールし、ブラウザーで直接開くことができます。
rustup component add rustc-docs
rustup doc --rustc-docs
注:
rustc-docsコンポーネントは最近の nightly ツールチェーンでのみ利用可能であり、すべての nightly 日付に存在するとは限りません。これは PR #75560(2020 年 8 月)で初めて導入されました。
古い nightly
古い nightly のコンパイラー内部に依存している場合、その特定の nightly の内部ドキュメントを参照したいことがあります。
これを行う唯一の方法は、ローカルでドキュメントを生成することです。
たとえば、nightly-2025-11-08 のドキュメントを取得するには、次のようにします。
その nightly の Git コミットハッシュを取得します。
rustup toolchain install nightly-2025-11-08
rustc +nightly-2025-11-08 --version --verbose
出力には、正確なソースリビジョンを識別する commit-hash 行が含まれます。
そのコミットで rust-lang/rust をチェックアウトし、その後 コンパイラードキュメント の手順に従ってください。
追加リソース
- GitHub Issue #137421 では、
rustc_privateのリンカーエラーはllvm-toolsがインストールされていないために発生することが多いと説明されています