pub enum ImplExprAtom {
Concrete(ItemRef),
LocalBound {
id: GenericPredicateId,
trait: Binder<TraitRef>,
path: Vec<ImplExprPathChunk>,
},
SelfImpl {
trait: Binder<TraitRef>,
path: Vec<ImplExprPathChunk>,
},
Dyn,
Builtin {
trait_data: BuiltinTraitData,
impl_exprs: Vec<ImplExpr>,
types: Vec<(DefId, Ty, Vec<ImplExpr>)>,
},
Error(String),
}Expand description
The source of a particular trait implementation. Most often this is either Concrete for a
concrete impl Trait for Type {} item, or LocalBound for a context-bound where T: Trait.
Variants§
Concrete(ItemRef)
A concrete impl Trait for Type {} item.
LocalBound
A context-bound clause like where T: Trait.
SelfImpl
The implicit Self: Trait clause present inside a trait Trait {} 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: BuiltinTraitDataExtra data for the given trait.
Error(String)
An error happened while resolving traits.
Trait Implementations§
Source§impl Clone for ImplExprAtom
impl Clone for ImplExprAtom
Source§fn clone(&self) -> ImplExprAtom
fn clone(&self) -> ImplExprAtom
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ImplExprAtom
impl Debug for ImplExprAtom
Source§impl Hash for ImplExprAtom
impl Hash for ImplExprAtom
Source§impl PartialEq for ImplExprAtom
impl PartialEq for ImplExprAtom
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
impl Eq for ImplExprAtom
impl StructuralPartialEq for ImplExprAtom
Auto Trait Implementations§
impl Freeze for ImplExprAtom
impl RefUnwindSafe for ImplExprAtom
impl Send for ImplExprAtom
impl Sync for ImplExprAtom
impl Unpin for ImplExprAtom
impl UnwindSafe for ImplExprAtom
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<I, T> ExtractContext<I, ()> for T
impl<I, T> ExtractContext<I, ()> for T
§fn extract_context(self, _original_input: I)
fn extract_context(self, _original_input: I)
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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