1
1
# ` rustc_driver ` and ` rustc_interface `
2
2
3
- The [ ` rustc_driver ` ] is essentially ` rustc ` 's ` main() ` function. It acts as
3
+ The [ ` rustc_driver ` ] is essentially ` rustc ` 's ` main ` function. It acts as
4
4
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
@@ -10,24 +10,25 @@ third parties to effectively use `rustc`'s internals as a library for
10
10
analyzing a crate or for ad hoc emulating of the compiler (i.e. ` rustdoc `
11
11
compiling code and serving output).
12
12
13
- More specifically the [ ` rustc_interface::run_compiler() ` ] [ i_rc ] function is the
13
+ More specifically the [ ` rustc_interface::run_compiler ` ] [ i_rc ] function is the
14
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
15
+ [ ` run_compiler ` ] [ i_rc ] takes a configuration variable for the compiler and a
16
16
` closure ` taking a yet unresolved [ ` Compiler ` ] . Operationally
17
- [ ` run_compiler() ` ] [ i_rc ] creates a ` Compiler ` from the configuration and passes
17
+ [ ` 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
19
queries to compile a crate and get the results. Providing results about the
20
20
internal state of the compiler what the [ ` rustc_driver ` ] does too. You can see
21
21
a minimal example of how to use [ ` rustc_interface ` ] [ here] [ example ] .
22
22
23
- You can see what queries are currently available in the [ ` Compiler ` ] rustdoc.
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 ] (not to be confused with
26
- [ ` rustc_interface::run_compiler() ` ] [ i_rc ] ). Generally [ ` rustc_driver::run_compiler() ` ] [ i_rc ]
27
- takes a bunch of command-line args and some other configurations and
28
- drives the compilation to completion.
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.
29
30
30
- Finally [ ` rustc_driver::run_compiler() ` ] [ rd_rc ] also takes a [ ` Callbacks ` ] [ cb ] ,
31
+ Finally [ ` rustc_driver::run_compiler ` ] [ rd_rc ] also takes a [ ` Callbacks ` ] [ cb ] ,
31
32
which is a ` trait ` that allows for custom compiler configuration, as well as
32
33
allowing custom code to run after different phases of the compilation.
33
34
0 commit comments