pub trait QueryCache: Sized {
type Key: QueryKey;
type Value: Copy;
// Required methods
fn lookup(&self, key: &Self::Key) -> Option<(Self::Value, DepNodeIndex)>;
fn complete(&self, key: Self::Key, value: Self::Value, index: DepNodeIndex);
fn for_each(
&self,
f: &mut dyn FnMut(&Self::Key, &Self::Value, DepNodeIndex),
);
fn len(&self) -> usize;
}Expand description
Trait for types that serve as an in-memory cache for query results, for a given key (argument) type and value (return) type.
Types implementing this trait are associated with actual key/value types
by the Cache associated type of the rustc_middle::query::Key trait.
Required Associated Types§
Required Methods§
Sourcefn lookup(&self, key: &Self::Key) -> Option<(Self::Value, DepNodeIndex)>
fn lookup(&self, key: &Self::Key) -> Option<(Self::Value, DepNodeIndex)>
Returns the cached value (and other information) associated with the given key, if it is present in the cache.
Sourcefn complete(&self, key: Self::Key, value: Self::Value, index: DepNodeIndex)
fn complete(&self, key: Self::Key, value: Self::Value, index: DepNodeIndex)
Adds a key/value entry to this cache.
Called by some part of the query system, after having obtained the value by executing the query or loading a cached value from disk.
Sourcefn for_each(&self, f: &mut dyn FnMut(&Self::Key, &Self::Value, DepNodeIndex))
fn for_each(&self, f: &mut dyn FnMut(&Self::Key, &Self::Value, DepNodeIndex))
Calls a closure on each entry in this cache.
Sourcefn len(&self) -> usize
fn len(&self) -> usize
Returns the number of entries currently in this cache.
Useful for reserving capacity in data structures that will hold the
output of a call to Self::for_each.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.