Struct rustc_trait_selection::traits::util::Elaborator [−][src]
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
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<I> IntoIterator for I where
I: Iterator, [src]
impl<I> IntoIterator for I where
I: Iterator, [src]impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]