use super::config::PressureLevel;
#[derive(Debug, Clone)]
pub struct AdaptiveTtlStatsSnapshot {
pub hits: u64,
pub misses: u64,
pub evictions: u64,
pub pressure_evictions: u64,
pub size_evictions: u64,
pub ttl_evictions: u64,
pub ttl_adaptations: u64,
pub hit_rate_percent: f64,
pub pressure_level: PressureLevel,
pub hot_item_count: usize,
pub cold_item_count: usize,
pub base_hits: u64,
pub base_misses: u64,
pub base_evictions: u64,
pub base_expirations: u64,
}
impl AdaptiveTtlStatsSnapshot {
pub fn hit_rate(&self) -> f64 {
let total = self.hits + self.misses;
if total > 0 {
(self.hits as f64 / total as f64) * 100.0
} else {
0.0
}
}
pub fn is_effective(&self) -> bool {
self.hit_rate() > 40.0
}
}