pub enum NoSolutionOrOpaquesAccessed {
NoSolution(NoSolution),
OpaquesAccessed,
}Variants§
NoSolution(NoSolution)
OpaquesAccessed
A bit like NoSolution, but for functions that normally cannot fail unless they accessed
opaues. (See TypingMode::ErasedNotCoherence). Getting OpaquesAccessed doesn’t mean there
truly is no solution. It just means that we want to bail out of the current query as fast as
possible, possibly by returning NoSolution if that’s fastest. This is okay because when you get
OpaquesAccessed we’re guaranteed that we’re going to retry this query in the original typing
mode to get the correct answer.
Trait Implementations§
Source§impl From<NoSolution> for NoSolutionOrOpaquesAccessed
impl From<NoSolution> for NoSolutionOrOpaquesAccessed
Source§fn from(value: NoSolution) -> NoSolutionOrOpaquesAccessed
fn from(value: NoSolution) -> NoSolutionOrOpaquesAccessed
Source§impl From<NoSolutionOrOpaquesAccessed> for NoSolution
This conversion is sound, because even in we’re in OpaquesAccessed,
we’re going to retry so NoSolution is a valid response to give..
impl From<NoSolutionOrOpaquesAccessed> for NoSolution
This conversion is sound, because even in we’re in OpaquesAccessed,
we’re going to retry so NoSolution is a valid response to give..
Source§fn from(_: NoSolutionOrOpaquesAccessed) -> NoSolution
fn from(_: NoSolutionOrOpaquesAccessed) -> NoSolution
Auto Trait Implementations§
impl DynSend for NoSolutionOrOpaquesAccessed
impl DynSync for NoSolutionOrOpaquesAccessed
impl Freeze for NoSolutionOrOpaquesAccessed
impl RefUnwindSafe for NoSolutionOrOpaquesAccessed
impl Send for NoSolutionOrOpaquesAccessed
impl Sync for NoSolutionOrOpaquesAccessed
impl Unpin for NoSolutionOrOpaquesAccessed
impl UnsafeUnpin for NoSolutionOrOpaquesAccessed
impl UnwindSafe for NoSolutionOrOpaquesAccessed
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, 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<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§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<T> ErasedDestructor for Twhere
T: 'static,
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:
NoSolution: 0 bytesOpaquesAccessed: 0 bytes