struct HeadUsages {
inductive: u32,
unknown: u32,
coinductive: u32,
forced_ambiguity: u32,
}
Expand description
The kinds of cycles a cycle head was involved in.
This is used to avoid rerunning a cycle if there’s just a single usage kind and the final result matches its provisional result.
While it tracks the amount of usages using u32
, we only ever
care whether there are any. We only count them to be able to ignore
usages from irrelevant candidates while evaluating a goal.
This cares about how nested goals relied on a cycle head. It does not care about how frequently the nested goal relied on it.
Fields§
§inductive: u32
§unknown: u32
§coinductive: u32
§forced_ambiguity: u32
Implementations§
Source§impl HeadUsages
impl HeadUsages
fn add_usage(&mut self, path: PathKind)
Sourcefn add_usages_from_nested(&mut self, usages: HeadUsages)
fn add_usages_from_nested(&mut self, usages: HeadUsages)
This adds the usages which occurred while computing a nested goal.
We don’t actually care about how frequently the nested goal relied on its cycle heads, only whether it did.
fn ignore_usages(&mut self, usages: HeadUsages)
fn is_empty(self) -> bool
Trait Implementations§
Source§impl Clone for HeadUsages
impl Clone for HeadUsages
Source§fn clone(&self) -> HeadUsages
fn clone(&self) -> HeadUsages
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for HeadUsages
impl Debug for HeadUsages
Source§impl Default for HeadUsages
impl Default for HeadUsages
Source§fn default() -> HeadUsages
fn default() -> HeadUsages
Source§impl PartialEq for HeadUsages
impl PartialEq for HeadUsages
impl Copy for HeadUsages
impl Eq for HeadUsages
impl StructuralPartialEq for HeadUsages
Auto Trait Implementations§
impl DynSend for HeadUsages
impl DynSync for HeadUsages
impl Freeze for HeadUsages
impl RefUnwindSafe for HeadUsages
impl Send for HeadUsages
impl Sync for HeadUsages
impl Unpin for HeadUsages
impl UnwindSafe for HeadUsages
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<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> 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: 16 bytes