Struct rustc_trait_selection::traits::util::Elaborator
source · pub struct Elaborator<'tcx> {
stack: Vec<Obligation<'tcx, Predicate<'tcx>>, Global>,
visited: PredicateSet<'tcx>,
}
Expand description
“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
.
Fields§
§stack: Vec<Obligation<'tcx, Predicate<'tcx>>, Global>
§visited: PredicateSet<'tcx>
Auto Trait Implementations§
impl<'tcx> !RefUnwindSafe for Elaborator<'tcx>
impl<'tcx> !Send for Elaborator<'tcx>
impl<'tcx> !Sync for Elaborator<'tcx>
impl<'tcx> Unpin for Elaborator<'tcx>
impl<'tcx> !UnwindSafe for Elaborator<'tcx>
Blanket Implementations§
source§impl<I> IntoIterator for Iwhere
I: Iterator,
impl<I> IntoIterator for Iwhere
I: Iterator,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 64 bytes