Fix heading levels in the query chapter (#1305)
This should fix the incorrect TOC rendering in #1303.
This commit is contained in:
parent
8c29f8a37c
commit
6d4d4c47d7
14
src/query.md
14
src/query.md
|
|
@ -43,7 +43,7 @@ compiler (for example, generating [MIR](./mir/)) currently work exactly like thi
|
|||
in-depth description of what queries are and how they work.
|
||||
If you intend to write a query of your own, this is a good read.
|
||||
|
||||
### Invoking queries
|
||||
## Invoking queries
|
||||
|
||||
Invoking a query is simple. The [`TyCtxt`] ("type context") struct offers a method
|
||||
for each defined query. For example, to invoke the `type_of`
|
||||
|
|
@ -55,7 +55,7 @@ let ty = tcx.type_of(some_def_id);
|
|||
|
||||
[`TyCtxt`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/struct.TyCtxt.html
|
||||
|
||||
### How the compiler executes a query
|
||||
## How the compiler executes a query
|
||||
|
||||
So you may be wondering what happens when you invoke a query
|
||||
method. The answer is that, for each query, the compiler maintains a
|
||||
|
|
@ -64,7 +64,7 @@ simple: we clone the return value out of the cache and return it
|
|||
(therefore, you should try to ensure that the return types of queries
|
||||
are cheaply cloneable; insert an `Rc` if necessary).
|
||||
|
||||
#### Providers
|
||||
### Providers
|
||||
|
||||
If, however, the query is *not* in the cache, then the compiler will
|
||||
try to find a suitable **provider**. A provider is a function that has
|
||||
|
|
@ -97,7 +97,7 @@ fn provider<'tcx>(
|
|||
Providers take two arguments: the `tcx` and the query key.
|
||||
They return the result of the query.
|
||||
|
||||
#### How providers are setup
|
||||
### How providers are setup
|
||||
|
||||
When the tcx is created, it is given the providers by its creator using
|
||||
the [`Providers`][providers_struct] struct. This struct is generated by
|
||||
|
|
@ -164,7 +164,7 @@ they define both a `provide` and a `provide_extern` function, through
|
|||
[rustc_metadata]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/index.html
|
||||
[wasm_import_module_map]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_codegen_ssa/back/symbol_export/fn.wasm_import_module_map.html
|
||||
|
||||
### Adding a new query
|
||||
## Adding a new query
|
||||
|
||||
How do you add a new query?
|
||||
Defining a query takes place in two steps:
|
||||
|
|
@ -238,7 +238,7 @@ which is used to cheaply modify MIR in place. See the definition
|
|||
of `Steal` for more details. New uses of `Steal` should **not** be
|
||||
added without alerting `@rust-lang/compiler`.
|
||||
|
||||
#### Query structs and descriptions
|
||||
### Query structs and descriptions
|
||||
|
||||
For each query, the `rustc_queries` macro will generate a "query struct"
|
||||
named after the query. This struct is a kind of placeholder
|
||||
|
|
@ -294,7 +294,7 @@ rustc_queries! {
|
|||
|
||||
`rustc_queries` macro will generate an appropriate `impl` automatically.
|
||||
|
||||
## External Links
|
||||
## External links
|
||||
|
||||
Related design ideas, and tracking issues:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue