1
1
# ` rustc_driver ` and ` rustc_interface `
2
2
3
- The [ ` rustc_driver ` ] is essentially ` rustc ` 's ` main ` function. It acts as
4
- the glue for running the various phases of the compiler in the correct order,
3
+ The [ ` rustc_driver ` ] is essentially ` rustc ` 's ` main ` function.
4
+ It acts as the glue for running the various phases of the compiler in the correct order,
5
5
using the interface defined in the [ ` rustc_interface ` ] crate.
6
6
7
7
Generally the [ ` rustc_interface ` ] crate provides external users with an (unstable) API
@@ -11,26 +11,25 @@ analyzing a crate or for ad hoc emulating of the compiler (i.e. `rustdoc`
11
11
compiling code and serving output).
12
12
13
13
More specifically the [ ` rustc_interface::run_compiler ` ] [ i_rc ] function is the
14
- main entrypoint for using [ ` nightly-rustc ` ] as a library. Initially
15
- [ ` run_compiler ` ] [ i_rc ] takes a configuration variable for the compiler and a
16
- ` closure ` taking a yet unresolved [ ` Compiler ` ] . Operationally
17
- [ ` run_compiler ` ] [ i_rc ] creates a ` Compiler ` from the configuration and passes
14
+ main entrypoint for using [ ` nightly-rustc ` ] as a library.
15
+ Initially [ ` run_compiler ` ] [ i_rc ] takes a configuration variable for the compiler
16
+ and a ` closure ` taking a yet unresolved [ ` Compiler ` ] .
17
+ Operationally [ ` run_compiler ` ] [ i_rc ] creates a ` Compiler ` from the configuration and passes
18
18
it to the ` closure ` . Inside the ` closure ` you can use the ` Compiler ` to drive
19
- queries to compile a crate and get the results. Providing results about the
20
- internal state of the compiler what the [ ` rustc_driver ` ] does too. You can see
21
- a minimal example of how to use [ ` rustc_interface ` ] [ here] [ example ] .
19
+ queries to compile a crate and get the results.
20
+ Providing results about the internal state of the compiler what the [ ` rustc_driver ` ] does too.
21
+ You can see a minimal example of how to use [ ` rustc_interface ` ] [ here] [ example ] .
22
22
23
23
You can see what queries are currently available in the [ ` Compiler ` ] rustdocs.
24
- You can see an example of how to use the queries by looking at the
25
- ` rustc_driver ` implementation, specifically
26
- [ ` rustc_driver::run_compiler ` ] [ rd_rc ] (not to be confused with
27
- [ ` rustc_interface::run_compiler ` ] [ i_rc ] ). Generally
28
- [ ` rustc_driver::run_compiler ` ] [ i_rc ] takes a bunch of command-line args and
29
- some other configurations and drives the compilation to completion.
24
+ You can see an example of how to use the queries by looking at the ` rustc_driver ` implementation,
25
+ specifically [ ` rustc_driver::run_compiler ` ] [ rd_rc ]
26
+ (not to be confused with [ ` rustc_interface::run_compiler ` ] [ i_rc ] ).
27
+ Generally [ ` rustc_driver::run_compiler ` ] [ i_rc ] takes a bunch of command-line args
28
+ and some other configurations and drives the compilation to completion.
30
29
31
30
Finally [ ` rustc_driver::run_compiler ` ] [ rd_rc ] also takes a [ ` Callbacks ` ] [ cb ] ,
32
- which is a ` trait ` that allows for custom compiler configuration, as well as
33
- allowing custom code to run after different phases of the compilation.
31
+ which is a ` trait ` that allows for custom compiler configuration,
32
+ as well as allowing custom code to run after different phases of the compilation.
34
33
35
34
> ** Warning:** By its very nature, the internal compiler APIs are always going
36
35
> to be unstable. That said, we do try not to break things unnecessarily.
0 commit comments