Enum rustc_trait_selection::solve::inspect::ProbeStep
source · pub enum ProbeStep<'tcx> {
AddGoal(GoalSource, Canonical<TyCtxt<'tcx>, State<'tcx, Goal<'tcx, Predicate<'tcx>>>>),
EvaluateGoals(AddedGoalsEvaluation<'tcx>),
NestedProbe(Probe<'tcx>),
RecordImplArgs {
impl_args: Canonical<TyCtxt<'tcx>, State<'tcx, &'tcx RawList<(), GenericArg<'tcx>>>>,
},
MakeCanonicalResponse {
shallow_certainty: Certainty,
},
}Variants§
AddGoal(GoalSource, Canonical<TyCtxt<'tcx>, State<'tcx, Goal<'tcx, Predicate<'tcx>>>>)
We added a goal to the EvalCtxt which will get proven
the next time EvalCtxt::try_evaluate_added_goals is called.
EvaluateGoals(AddedGoalsEvaluation<'tcx>)
The inside of a EvalCtxt::try_evaluate_added_goals call.
NestedProbe(Probe<'tcx>)
A call to probe while proving the current goal. This is
used whenever there are multiple candidates to prove the
current goalby .
RecordImplArgs
A trait goal was satisfied by an impl candidate.
MakeCanonicalResponse
A call to EvalCtxt::evaluate_added_goals_make_canonical_response with
Certainty was made. This is the certainty passed in, so it’s not unified
with the certainty of the try_evaluate_added_goals that is done within;
if it’s Certainty::Yes, then we can trust that the candidate is “finished”
and we didn’t force ambiguity for some reason.
Trait Implementations§
source§impl<'tcx> PartialEq for ProbeStep<'tcx>
impl<'tcx> PartialEq for ProbeStep<'tcx>
impl<'tcx> Eq for ProbeStep<'tcx>
impl<'tcx> StructuralPartialEq for ProbeStep<'tcx>
Auto Trait Implementations§
impl<'tcx> DynSend for ProbeStep<'tcx>
impl<'tcx> DynSync for ProbeStep<'tcx>
impl<'tcx> Freeze for ProbeStep<'tcx>
impl<'tcx> !RefUnwindSafe for ProbeStep<'tcx>
impl<'tcx> Send for ProbeStep<'tcx>
impl<'tcx> Sync for ProbeStep<'tcx>
impl<'tcx> Unpin for ProbeStep<'tcx>
impl<'tcx> !UnwindSafe for ProbeStep<'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
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.source§impl<T> Filterable for T
impl<T> Filterable for T
source§fn filterable(
self,
filter_name: &'static str
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
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<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
source§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: 120 bytes
Size for each variant:
AddGoal: 64 bytesEvaluateGoals: 40 bytesNestedProbe: 120 bytesRecordImplArgs: 48 bytesMakeCanonicalResponse: 9 bytes