Skip to main content

Module elaborate

Module elaborate 

Source

Re-exportsΒ§

use std::marker::PhantomData; πŸ”’
use smallvec::smallvec; πŸ”’
use crate::data_structures::HashSet; πŸ”’
use crate::lang_items::SolverTraitLangItem; πŸ”’
use crate::outlives::Component; πŸ”’
use crate::outlives::push_outlives_components; πŸ”’
use crate as ty; πŸ”’
use crate::Interner; πŸ”’
use crate::Region; πŸ”’
use crate::Unnormalized; πŸ”’
use crate::Upcast as _; πŸ”’
use crate::inherent::*; πŸ”’

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.

EnumsΒ§

ElaborateSized πŸ”’
Filter πŸ”’

TraitsΒ§

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

FunctionsΒ§

elaborate
elaborate_component_to_clause πŸ”’
elaborate_outlives_assumptions
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