add a few links to rustdocs
This commit is contained in:
parent
55f8aae0e1
commit
0614aad0de
|
|
@ -9,7 +9,7 @@ deprecated once they become the standard kind of lifetime.)
|
||||||
|
|
||||||
The MIR-based region analysis consists of two major functions:
|
The MIR-based region analysis consists of two major functions:
|
||||||
|
|
||||||
- `replace_regions_in_mir`, invoked first, has two jobs:
|
- [`replace_regions_in_mir`], invoked first, has two jobs:
|
||||||
- First, it finds the set of regions that appear within the
|
- First, it finds the set of regions that appear within the
|
||||||
signature of the function (e.g., `'a` in `fn foo<'a>(&'a u32) {
|
signature of the function (e.g., `'a` in `fn foo<'a>(&'a u32) {
|
||||||
... }`). These are called the "universal" or "free" regions – in
|
... }`). These are called the "universal" or "free" regions – in
|
||||||
|
|
@ -21,21 +21,28 @@ The MIR-based region analysis consists of two major functions:
|
||||||
not of much interest. The intention is that – eventually – they
|
not of much interest. The intention is that – eventually – they
|
||||||
will be "erased regions" (i.e., no information at all), since we
|
will be "erased regions" (i.e., no information at all), since we
|
||||||
won't be doing lexical region inference at all.
|
won't be doing lexical region inference at all.
|
||||||
- `compute_regions`, invoked second: this is given as argument the
|
- [`compute_regions`], invoked second: this is given as argument the
|
||||||
results of move analysis. It has the job of computing values for all
|
results of move analysis. It has the job of computing values for all
|
||||||
the inference variables that `replace_regions_in_mir` introduced.
|
the inference variables that `replace_regions_in_mir` introduced.
|
||||||
- To do that, it first runs the [MIR type checker](#mirtypeck). This
|
- To do that, it first runs the [MIR type checker](#mirtypeck). This
|
||||||
is basically a normal type-checker but specialized to MIR, which
|
is basically a normal type-checker but specialized to MIR, which
|
||||||
is much simpler than full Rust of course. Running the MIR type
|
is much simpler than full Rust, of course. Running the MIR type
|
||||||
checker will however create **outlives constraints** between
|
checker will however create **outlives constraints** between
|
||||||
region variables (e.g., that one variable must outlive another
|
region variables (e.g., that one variable must outlive another
|
||||||
one) to reflect the subtyping relationships that arise.
|
one) to reflect the subtyping relationships that arise.
|
||||||
- It also adds **liveness constraints** that arise from where variables
|
- It also adds **liveness constraints** that arise from where variables
|
||||||
are used.
|
are used.
|
||||||
- More details to come, though the [NLL RFC] also includes fairly thorough
|
- After this, we create a [`RegionInferenceContext`] with the constraints we
|
||||||
(and hopefully readable) coverage.
|
have computed and the inference variables we introduced and use the
|
||||||
|
[`solve`] method to infer values for all region inference varaibles.
|
||||||
|
- The [NLL RFC] also includes fairly thorough (and hopefully readable)
|
||||||
|
coverage.
|
||||||
|
|
||||||
[fvb]: ../appendix/background.html#free-vs-bound
|
[fvb]: ../appendix/background.html#free-vs-bound
|
||||||
|
[`replace_regions_in_mir`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/fn.replace_regions_in_mir.html
|
||||||
|
[`compute_regions`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/fn.compute_regions.html
|
||||||
|
[`RegionInferenceContext`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/region_infer/struct.RegionInferenceContext.html
|
||||||
|
[`solve`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/region_infer/struct.RegionInferenceContext.html#method.solve
|
||||||
[NLL RFC]: http://rust-lang.github.io/rfcs/2094-nll.html
|
[NLL RFC]: http://rust-lang.github.io/rfcs/2094-nll.html
|
||||||
|
|
||||||
## Universal regions
|
## Universal regions
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue