enum CurrentGoalKind {
Misc,
CoinductiveTrait,
NormalizesTo,
}
Expand description
The kind of goal we’re currently proving.
This has effects on cycle handling handling and on how we compute query responses, see the variant descriptions for more info.
Variants§
Misc
CoinductiveTrait
We’re proving an trait goal for a coinductive trait, either an auto trait or Sized
.
These are currently the only goals whose impl where-clauses are considered to be productive steps.
NormalizesTo
Unlike other goals, NormalizesTo
goals act like functions with the expected term
always being fully unconstrained. This would weaken inference however, as the nested
goals never get the inference constraints from the actual normalized-to type.
Because of this we return any ambiguous nested goals from NormalizesTo
to the
caller when then adds these to its own context. The caller is always an AliasRelate
goal so this never leaks out of the solver.
Implementations§
Source§impl CurrentGoalKind
impl CurrentGoalKind
fn from_query_input<I: Interner>( cx: I, input: QueryInput<I, I::Predicate>, ) -> CurrentGoalKind
Trait Implementations§
Source§impl Clone for CurrentGoalKind
impl Clone for CurrentGoalKind
Source§fn clone(&self) -> CurrentGoalKind
fn clone(&self) -> CurrentGoalKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for CurrentGoalKind
impl Debug for CurrentGoalKind
impl Copy for CurrentGoalKind
Auto Trait Implementations§
impl DynSend for CurrentGoalKind
impl DynSync for CurrentGoalKind
impl Freeze for CurrentGoalKind
impl RefUnwindSafe for CurrentGoalKind
impl Send for CurrentGoalKind
impl Sync for CurrentGoalKind
impl Unpin for CurrentGoalKind
impl UnwindSafe for CurrentGoalKind
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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:
Misc
: 0 bytesCoinductiveTrait
: 0 bytesNormalizesTo
: 0 bytes