pub struct AnalysisCache { /* private fields */ }Expand description
A deterministic, bounded cache for complete analysis results.
Entries are keyed by the schema-versioned canonical score fingerprint. A score edit therefore naturally misses the old entry without requiring callers to diff JSON or manually invalidate every analysis category. Eviction is insertion-order based rather than hash-map iteration based, keeping behavior reproducible across hosts.
Implementations§
Source§impl AnalysisCache
impl AnalysisCache
Sourcepub fn with_capacity(capacity: usize) -> Result<Self, AnalysisCacheError>
pub fn with_capacity(capacity: usize) -> Result<Self, AnalysisCacheError>
Create a cache with a fixed maximum number of score results.
Sourcepub fn stats(&self) -> AnalysisCacheStats
pub fn stats(&self) -> AnalysisCacheStats
Return hit/miss counters since construction or the last reset.
Sourcepub fn reset_stats(&mut self)
pub fn reset_stats(&mut self)
Reset hit/miss counters without removing cached results.
Sourcepub fn get(&self, score: &Score) -> Option<&AnalysisResult>
pub fn get(&self, score: &Score) -> Option<&AnalysisResult>
Return a cached result for the supplied score, if its canonical content is present.
Sourcepub fn analyze(&mut self, score: &Score) -> AnalysisResult
pub fn analyze(&mut self, score: &Score) -> AnalysisResult
Analyze a score once per cache key, returning a cloned result for ergonomic host use.
Sourcepub fn analyze_batch(&mut self, scores: &[Score]) -> Vec<AnalysisResult>
pub fn analyze_batch(&mut self, scores: &[Score]) -> Vec<AnalysisResult>
Analyze scores in input order while reusing results already present in the cache.
Sourcepub fn analyze_after_edit(
&mut self,
previous: &Score,
current: &Score,
) -> AnalysisResult
pub fn analyze_after_edit( &mut self, previous: &Score, current: &Score, ) -> AnalysisResult
Reclaim a previous editor snapshot and analyze its replacement in one operation.
Sourcepub fn analyze_after_edit_with_diff(
&mut self,
previous_score: &Score,
previous_result: &AnalysisResult,
current: &Score,
) -> AnalysisEditResult
pub fn analyze_after_edit_with_diff( &mut self, previous_score: &Score, previous_result: &AnalysisResult, current: &Score, ) -> AnalysisEditResult
Re-analyze an edited score and return the category-level diff from the previous result.
Sourcepub fn analyze_selected_after_edit(
&mut self,
previous_score: &Score,
previous_result: &AnalysisResult,
current: &Score,
categories: &[AnalysisCategory],
) -> AnalysisResult
pub fn analyze_selected_after_edit( &mut self, previous_score: &Score, previous_result: &AnalysisResult, current: &Score, categories: &[AnalysisCategory], ) -> AnalysisResult
Recompute selected categories after an edit and cache the merged complete result.
Sourcepub fn analyze_after_edit_with_plan(
&mut self,
previous_score: &Score,
previous_result: &AnalysisResult,
current: &Score,
plan: &AnalysisRefreshPlan,
) -> AnalysisEditResult
pub fn analyze_after_edit_with_plan( &mut self, previous_score: &Score, previous_result: &AnalysisResult, current: &Score, plan: &AnalysisRefreshPlan, ) -> AnalysisEditResult
Recompute a refresh plan, using its region for local passes, and cache the merged result.
Sourcepub fn analyze_after_edit_with_hint(
&mut self,
previous_score: &Score,
previous_result: &AnalysisResult,
current: &Score,
hint: &ChangeHint,
) -> AnalysisEditResult
pub fn analyze_after_edit_with_hint( &mut self, previous_score: &Score, previous_result: &AnalysisResult, current: &Score, hint: &ChangeHint, ) -> AnalysisEditResult
Apply a change hint, recompute its affected categories, and return the result diff.
Sourcepub fn insert(&mut self, key: String, result: AnalysisResult)
pub fn insert(&mut self, key: String, result: AnalysisResult)
Insert a previously computed result and evict the oldest entry when the cache is full.
Sourcepub fn invalidate(&mut self, score: &Score) -> bool
pub fn invalidate(&mut self, score: &Score) -> bool
Remove the cached result for a score and return whether an entry was removed.