enum RebaseReason {
NoCycleUsages,
Ambiguity,
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
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 DynSend for RebaseReason
impl DynSync for RebaseReason
impl Freeze for RebaseReason
impl RefUnwindSafe for RebaseReason
impl Send for RebaseReason
impl Sync for RebaseReason
impl Unpin for RebaseReason
impl UnwindSafe for RebaseReason
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: 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:
NoCycleUsages
: 0 bytesAmbiguity
: 0 bytesOverflow
: 0 bytesReachedFixpoint
: 1 byte