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: u32Implementations§
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