Structs§
- “Elaboration” is the process of identifying all the predicates that are implied by a source predicate. Currently, this basically means walking the “supertraits” and other similar assumptions. For example, if we know that
T: Ord
, the elaborator would deduce thatT: PartialOrd
holds as well. Similarly, if we havetrait Foo: 'static
, and we know thatT: Foo
, then we know thatT: 'static
. - A filter around an iterator of predicates that makes it yield up just trait references.
Traits§
- Describes how to elaborate an obligation into a sub-obligation.
Functions§
- Computes the def-ids of the transitive supertraits of
trait_def_id
. This (intentionally) does not compute the full elaborated super-predicates but just the set of def-ids. It is used to identify which traits may define a given associated type to help avoid cycle errors, and to make size estimates for vtable layout computation.