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
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<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