pub struct DefIdCache<V> {
    local: VecCache<DefIndex, V, DepNodeIndex>,
    foreign: DefaultCache<DefId, V>,
}Expand description
In-memory cache for queries whose key is a DefId.
Selects between one of two internal caches, depending on whether the key is a local ID or foreign-crate ID.
Fields§
§local: VecCache<DefIndex, V, DepNodeIndex>Stores the local DefIds in a dense map. Local queries are much more often dense, so this is a win over hashing query keys at marginal memory cost (~5% at most) compared to FxHashMap.
foreign: DefaultCache<DefId, V>Trait Implementations§
Source§impl<V> Default for DefIdCache<V>
 
impl<V> Default for DefIdCache<V>
Source§impl<V> QueryCache for DefIdCache<V>where
    V: Copy,
 
impl<V> QueryCache for DefIdCache<V>where
    V: Copy,
type Key = DefId
type Value = V
Source§fn lookup(&self, key: &DefId) -> Option<(V, DepNodeIndex)>
 
fn lookup(&self, key: &DefId) -> Option<(V, DepNodeIndex)>
Returns the cached value (and other information) associated with the
given key, if it is present in the cache.
Source§fn complete(&self, key: DefId, value: V, index: DepNodeIndex)
 
fn complete(&self, key: DefId, value: V, index: DepNodeIndex)
Adds a key/value entry to this cache. Read more
fn iter(&self, f: &mut dyn FnMut(&Self::Key, &Self::Value, DepNodeIndex))
Auto Trait Implementations§
impl<V> DynSend for DefIdCache<V>where
    V: DynSend,
impl<V> DynSync for DefIdCache<V>where
    V: DynSend,
impl<V> !Freeze for DefIdCache<V>
impl<V> !RefUnwindSafe for DefIdCache<V>
impl<V> Send for DefIdCache<V>where
    V: Send,
impl<V> !Sync for DefIdCache<V>
impl<V> Unpin for DefIdCache<V>where
    V: Unpin,
impl<V> UnwindSafe for DefIdCache<V>where
    V: RefUnwindSafe + UnwindSafe,
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
Mutably borrows from an owned value. Read more
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>
Converts 
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>
Converts 
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<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<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: 384 bytes