pub enum ImplExprAtom<'tcx> {
Concrete {
def_id: DefId,
generics: GenericArgsRef<'tcx>,
},
LocalBound {
predicate: Predicate<'tcx>,
index: usize,
trait: PolyTraitRef<'tcx>,
path: Path<'tcx>,
},
SelfImpl {
trait: PolyTraitRef<'tcx>,
path: Path<'tcx>,
},
Dyn,
Builtin {
trait_data: BuiltinTraitData<'tcx>,
impl_exprs: Vec<ImplExpr<'tcx>>,
types: Vec<(DefId, Ty<'tcx>, Vec<ImplExpr<'tcx>>)>,
},
Error(String),
}Variants§
Concrete
A concrete impl Trait for Type {} item.
LocalBound
A context-bound clause like where T: Trait.
Fields
predicate: Predicate<'tcx>index: usizeThe nth (non-self) predicate found for this item. We use predicates from
required_predicates starting from the parentmost item.
trait: PolyTraitRef<'tcx>SelfImpl
The automatic clause Self: Trait present inside a impl Trait for Type {} item.
Dyn
dyn Trait is a wrapped value with a virtual table for trait
Trait. In other words, a value dyn Trait is a dependent
triple that gathers a type τ, a value of type τ and an
instance of type Trait.
dyn Trait implements Trait using a built-in implementation; this refers to that
built-in implementation.
Builtin
A built-in trait whose implementation is computed by the compiler, such as FnMut. This
morally points to an invisible impl block; as such it contains the information we may
need from one.
Fields
trait_data: BuiltinTraitData<'tcx>Extra data for the given trait.
Error(String)
An error happened while resolving traits.
Trait Implementations§
Source§impl<'tcx> Clone for ImplExprAtom<'tcx>
impl<'tcx> Clone for ImplExprAtom<'tcx>
Source§fn clone(&self) -> ImplExprAtom<'tcx>
fn clone(&self) -> ImplExprAtom<'tcx>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'tcx> Debug for ImplExprAtom<'tcx>
impl<'tcx> Debug for ImplExprAtom<'tcx>
Source§impl<'tcx, S: UnderOwnerState<'tcx>> SInto<S, ImplExprAtom> for ImplExprAtom<'tcx>
impl<'tcx, S: UnderOwnerState<'tcx>> SInto<S, ImplExprAtom> for ImplExprAtom<'tcx>
fn sinto(&self, s: &S) -> ImplExprAtom
Auto Trait Implementations§
impl<'tcx> Freeze for ImplExprAtom<'tcx>
impl<'tcx> !RefUnwindSafe for ImplExprAtom<'tcx>
impl<'tcx> Send for ImplExprAtom<'tcx>
impl<'tcx> Sync for ImplExprAtom<'tcx>
impl<'tcx> Unpin for ImplExprAtom<'tcx>
impl<'tcx> !UnwindSafe for ImplExprAtom<'tcx>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more