Module util

Source

Structs§

ClauseWithSupertraitSpan
Elaborator
“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 that T: PartialOrd holds as well. Similarly, if we have trait Foo: 'static, and we know that T: Foo, then we know that T: 'static.
FilterToTraits
A filter around an iterator of predicates that makes it yield up just trait references.
PredicateSet

Traits§

Elaboratable
Describes how to elaborate an obligation into a sub-obligation.

Functions§

anonymize_predicate
elaborate
supertrait_def_ids
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.
supertraits
transitive_bounds_that_define_assoc_item
A specialized variant of elaborate that only elaborates trait references that may define the given associated item with the name assoc_name. It uses the explicit_supertraits_containing_assoc_item query to avoid enumerating super-predicates that aren’t related to assoc_item. This is used when resolving types like Self::Item or T::Item and helps to avoid cycle errors (see e.g. #35237).