pub struct PurityCache { /* private fields */ }Expand description
Persistent cache for purity propagation results
Implementations§
Source§impl PurityCache
impl PurityCache
Sourcepub fn load(project_root: &Path) -> Result<Self>
pub fn load(project_root: &Path) -> Result<Self>
Load cache from disk, creating new if doesn’t exist
Sourcepub fn is_valid(
&self,
func_id: &FunctionId,
current_mtime: u64,
current_source_hash: u64,
current_deps_hash: u64,
) -> bool
pub fn is_valid( &self, func_id: &FunctionId, current_mtime: u64, current_source_hash: u64, current_deps_hash: u64, ) -> bool
Check if cached entry is still valid
Sourcepub fn insert(
&mut self,
func_id: FunctionId,
result: PurityResult,
source_hash: u64,
deps_hash: u64,
file_mtime: u64,
)
pub fn insert( &mut self, func_id: FunctionId, result: PurityResult, source_hash: u64, deps_hash: u64, file_mtime: u64, )
Insert a new cache entry
Sourcepub fn get(&self, func_id: &FunctionId) -> Option<&PurityResult>
pub fn get(&self, func_id: &FunctionId) -> Option<&PurityResult>
Get a cached result if valid
Sourcepub fn invalidate_file(&mut self, file_path: &Path)
pub fn invalidate_file(&mut self, file_path: &Path)
Invalidate entries for a specific file
Sourcepub fn invalidate_dependents(&mut self, changed_func_ids: &[FunctionId])
pub fn invalidate_dependents(&mut self, changed_func_ids: &[FunctionId])
Invalidate all entries that depend on a changed function
Trait Implementations§
Source§impl Clone for PurityCache
impl Clone for PurityCache
Source§fn clone(&self) -> PurityCache
fn clone(&self) -> PurityCache
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PurityCache
impl Debug for PurityCache
Source§impl Default for PurityCache
impl Default for PurityCache
Source§impl<'de> Deserialize<'de> for PurityCache
impl<'de> Deserialize<'de> for PurityCache
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for PurityCache
impl RefUnwindSafe for PurityCache
impl Send for PurityCache
impl Sync for PurityCache
impl Unpin for PurityCache
impl UnsafeUnpin for PurityCache
impl UnwindSafe for PurityCache
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> EnsureExt<T> for T
impl<T> EnsureExt<T> for T
Source§fn ensure<P, E>(self, predicate: P, error: E) -> Validation<T, NonEmptyVec<E>>where
P: Predicate<T>,
fn ensure<P, E>(self, predicate: P, error: E) -> Validation<T, NonEmptyVec<E>>where
P: Predicate<T>,
Validate that this value satisfies the given predicate. Read more
Source§fn ensure_with<P, E, F>(
self,
predicate: P,
error_fn: F,
) -> Validation<T, NonEmptyVec<E>>
fn ensure_with<P, E, F>( self, predicate: P, error_fn: F, ) -> Validation<T, NonEmptyVec<E>>
Validate with an error-generating function. 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 more