Module binder

Module binder 

Source

Macros§

impl_binder_encode_decode 🔒

Structs§

ArgFolder 🔒
Binder
Binder is a binder for higher-ranked lifetimes or types. It is part of the compiler’s representation for things like for<'a> Fn(&'a isize) (which would be represented by the type PolyTraitRef == Binder<I, TraitRef>).
EarlyBinder
Similar to Binder except that it tracks early bound generics, i.e. struct Foo<T>(T) needs T instantiated immediately. This type primarily exists to avoid forgetting to call instantiate.
EarlyBinderIter
IterIdentityCopied
IterInstantiated
IterInstantiatedCopied
Placeholder
The “placeholder index” fully defines a placeholder region, type, or const. Placeholders are identified by both a universe, as well as a name residing within that universe. Distinct bound regions/types/consts within the same universe simply have an unknown relationship to one another.
ValidateBoundVars

Enums§

BoundVarIndexKind
Okay, we do something fun for Bound types/regions/consts: Specifically, we distinguish between canonically bound things and for<> bound things. And, really, it comes down to caching during canonicalization and instantiation.