Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

外部の rustc_driver

rustc_private

概要

rustc_private 機能により、外部クレートがコンパイラー内部を使用できるようになります。

公式ツールチェーンで rustc_private を使用する

rustup 経由で配布されている公式 Rust ツールチェーンで rustc_private 機能を使用する場合は、追加で 2 つのコンポーネントをインストールする必要があります。

  1. rustc-dev: コンパイラーライブラリを提供します
  2. 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 ツールチェーンのビルドに使用されたものと一致している必要があります

トラブルシューティング手順

  1. LLVM がインストールされ、アクセス可能であることを確認します
  2. ライブラリパスが設定されていることを確認します。
    export LD_LIBRARY_PATH=/path/to/llvm/lib:$LD_LIBRARY_PATH
    
  3. LLVM のバージョンが Rust ツールチェーンと互換性があることを確認します

ツリー外プロジェクト向けに rust-analyzer を設定する

rustc_private クレートを使用するツリー外プロジェクトを開発している場合、これらのクレートを認識するように rust-analyzer を設定できます。

設定手順

  1. エディター設定で rust-analyzer.rustc.source"discover" に設定します。

    VS Code の場合は、rust_analyzer_settings.json に次を追加します。

    {
        "rust-analyzer.rustc.source": "discover"
    }
    
  2. 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 がインストールされていないために発生することが多いと説明されています