pub(super) enum TraitGoalProvenVia {
Misc,
ParamEnv,
AliasBound,
}
Expand description
How we’ve proven this trait goal.
This is used by NormalizesTo
goals to only normalize
by using the same ‘kind of candidate’ we’ve used to prove
its corresponding trait goal. Most notably, we do not
normalize by using an impl if the trait goal has been
proven via a ParamEnv
candidate.
This is necessary to avoid unnecessary region constraints, see trait-system-refactor-initiative#125 for more details.
Variants§
Misc
We’ve proven the trait goal by something which is is not a non-global where-bound or an alias-bound.
This means we don’t disable any candidates during normalization.
ParamEnv
AliasBound
Trait Implementations§
Source§impl Clone for TraitGoalProvenVia
impl Clone for TraitGoalProvenVia
Source§fn clone(&self) -> TraitGoalProvenVia
fn clone(&self) -> TraitGoalProvenVia
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for TraitGoalProvenVia
impl Debug for TraitGoalProvenVia
impl Copy for TraitGoalProvenVia
Auto Trait Implementations§
impl DynSend for TraitGoalProvenVia
impl DynSync for TraitGoalProvenVia
impl Freeze for TraitGoalProvenVia
impl RefUnwindSafe for TraitGoalProvenVia
impl Send for TraitGoalProvenVia
impl Sync for TraitGoalProvenVia
impl Unpin for TraitGoalProvenVia
impl UnwindSafe for TraitGoalProvenVia
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, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
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: 1 byte
Size for each variant:
Misc
: 0 bytesParamEnv
: 0 bytesAliasBound
: 0 bytes