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_driverrustc_interface

rustc_driver

rustc_driver は本質的に rustcmain 関数です。 これは、rustc_interface crate で定義されたインターフェイスを使用して、 コンパイラのさまざまなフェーズを正しい順序で実行するための接着剤として機能します。可能な場合は、rustc_interface ではなく rustc_driver を使用することが推奨されます。

rustc_driver の主なエントリーポイントは rustc_driver::run_compiler です。 このビルダーは、rustc と同じコマンドライン引数に加えて、Callbacks の実装と、その他の任意のオプションをいくつか受け取ります。 Callbacks は、カスタムのコンパイラ設定を可能にする trait であり、 コンパイルのさまざまなフェーズの後にカスタムコードを実行できるようにもします。

rustc_interface

rustc_interface crate は、コンパイルプロセスを手動で駆動するための低レベル API を外部ユーザーに提供します。 これにより、サードパーティは、crate を解析するため、または rustc_driver が十分に柔軟でない場合(つまり、rustdoc がコードをコンパイルして出力を提供する場合)にコンパイラをアドホックにエミュレートするために、rustc の内部をライブラリとして効果的に使用できます。

rustc_interface の主なエントリーポイント(rustc_interface::run_compiler)は、コンパイラ用の設定変数と、 まだ解決されていない Compiler を受け取る closure を取ります。 run_compiler は設定から Compiler を作成し、それを closure に渡します。 closure の内部では、Compiler を使用してさまざまな関数を呼び出し、crate をコンパイルして結果を取得できます。 rustc_interface の使い方の最小限の例はこちらで確認できます。

rustc_interface を使用する際に必要となるさまざまな関数の使い方の例は、rustc_driver の実装を見ることで確認できます。 具体的には rustc_driver_impl::run_compiler です (rustc_interface::run_compiler と混同しないでください)。

警告: その性質上、コンパイラの内部 API は常に 不安定です。とはいえ、不要に壊さないようには努めています。