Additional information for closures.
We mostly use it in micro-passes like [crate::update_closure_signature].
Const Generic Variable
A predicate of the form exists<T> where T: Trait
.
A function signature.
Generic parameters for a declaration.
We group the generics which come from the Rust compiler substitutions
(the regions, types and const generics) as well as the trait clauses.
The reason is that we consider that those are parameters that need to
be filled. We group in a different place the predicates which are not
trait clauses, because those enforce constraints but do not need to
be filled with witnesses/instances.
.0 outlives .1
We use this to store information about the parameters in parent blocks.
This is necessary because in the definitions we store all the generics,
including those coming from the outer impl block.
A value of type T
bound by generic parameters. Used in any context where we’re adding generic
parameters that aren’t on the top-level item, e.g. for<'a>
clauses, trait methods (TODO),
GATs (TODO).
Region variable.
A predicate of the form Type: Trait<Args>
.
A predicate of the form Type: Trait<Args>
.
A reference to a trait
A constraint over a trait associated type.
A type.
A type declaration.
Type variable.
We make sure not to mix variables and type variables by having two distinct
definitions.