Struct rustc_trait_selection::solve::search_graph::StackEntry
source · struct StackEntry<'tcx> {
input: CanonicalInput<'tcx>,
available_depth: Limit,
reached_depth: StackDepth,
non_root_cycle_participant: Option<StackDepth>,
encountered_overflow: bool,
has_been_used: HasBeenUsed,
provisional_result: Option<QueryResult<'tcx>>,
}
Fields§
§input: CanonicalInput<'tcx>
§available_depth: Limit
§reached_depth: StackDepth
The maximum depth reached by this stack entry, only up-to date for the top of the stack and lazily updated for the rest.
non_root_cycle_participant: Option<StackDepth>
Whether this entry is a non-root cycle participant.
We must not move the result of non-root cycle participants to the global cache. See SearchGraph::cycle_participants for more details. We store the highest stack depth of a head of a cycle this goal is involved in. This necessary to soundly cache its provisional result.
encountered_overflow: bool
§has_been_used: HasBeenUsed
§provisional_result: Option<QueryResult<'tcx>>
Starts out as None
and gets set when rerunning this
goal in case we encounter a cycle.
Trait Implementations§
Auto Trait Implementations§
impl<'tcx> DynSend for StackEntry<'tcx>
impl<'tcx> DynSync for StackEntry<'tcx>
impl<'tcx> Freeze for StackEntry<'tcx>
impl<'tcx> !RefUnwindSafe for StackEntry<'tcx>
impl<'tcx> Send for StackEntry<'tcx>
impl<'tcx> Sync for StackEntry<'tcx>
impl<'tcx> Unpin for StackEntry<'tcx>
impl<'tcx> !UnwindSafe for StackEntry<'tcx>
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
§impl<T> Filterable for T
impl<T> Filterable 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<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> 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,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
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: 112 bytes