enum RebaseReason<X: Cx> {
NoCycleUsages,
Ambiguity(X::AmbiguityInfo),
Overflow,
ReachedFixpoint(Option<PathKind>),
}Expand description
We need to rebase provisional cache entries when popping one of their cycle heads from the stack. This may not necessarily mean that we’ve actually reached a fixpoint for that cycle head, which impacts the way we rebase provisional cache entries.
Variants§
NoCycleUsages
Ambiguity(X::AmbiguityInfo)
Overflow
ReachedFixpoint(Option<PathKind>)
We’ve actually reached a fixpoint.
This either happens in the first evaluation step for the cycle head.
In this case the used provisional result depends on the cycle PathKind.
We store this path kind to check whether the the provisional cache entry
we’re rebasing relied on the same cycles.
In later iterations cycles always return stack_entry.provisional_result
so we no longer depend on the PathKind. We store None in that case.
Auto Trait Implementations§
impl<X> DynSend for RebaseReason<X>
impl<X> DynSync for RebaseReason<X>
impl<X> Freeze for RebaseReason<X>
impl<X> RefUnwindSafe for RebaseReason<X>
impl<X> Send for RebaseReason<X>
impl<X> Sync for RebaseReason<X>
impl<X> Unpin for RebaseReason<X>
impl<X> UnwindSafe for RebaseReason<X>
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<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: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.