pub struct ErrorStats {
pub total_errors: usize,
pub success_count: usize,
pub consecutive_errors: usize,
pub errors_by_category: HashMap<ErrorCategory, usize>,
pub last_error_time: Option<u64>,
pub last_success_time: Option<u64>,
pub is_task_terminated: bool,
pub is_module_terminated: bool,
}Expand description
Aggregated counters and state flags for an error key.
Fields§
§total_errors: usizeTotal error count.
success_count: usizeTotal success count.
consecutive_errors: usizeCurrent streak of consecutive errors.
errors_by_category: HashMap<ErrorCategory, usize>Error counts grouped by category.
last_error_time: Option<u64>UNIX timestamp of the latest error.
last_success_time: Option<u64>UNIX timestamp of the latest success.
is_task_terminated: bool§is_module_terminated: boolImplementations§
Source§impl ErrorStats
impl ErrorStats
Sourcepub fn error_rate(&self) -> f64
pub fn error_rate(&self) -> f64
Returns error ratio in [0.0, 1.0].
Sourcepub fn health_score(&self) -> f64
pub fn health_score(&self) -> f64
Computes a bounded health score where 1.0 is healthiest.
§Examples
use mocra_core::common::status_tracker::ErrorStats;
let mut stats = ErrorStats::default();
stats.total_errors = 3;
stats.success_count = 7;
assert_eq!(stats.error_rate(), 0.3);
assert!(stats.health_score() > 0.6);
stats.consecutive_errors = 5;
assert!(stats.health_score() < 0.5);Trait Implementations§
Source§impl CacheAble for ErrorStats
impl CacheAble for ErrorStats
fn field() -> impl AsRef<str>
fn serialized_size_hint(&self) -> Option<usize>
fn clone_for_serialize(&self) -> Option<Self>
fn send<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 str,
sync: &'life2 CacheService,
) -> Pin<Box<dyn Future<Output = Result<(), CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn send_persistent<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 str,
sync: &'life2 CacheService,
) -> Pin<Box<dyn Future<Output = Result<(), CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn send_persistent<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 str,
sync: &'life2 CacheService,
) -> Pin<Box<dyn Future<Output = Result<(), CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Store this value in the cache with no TTL (persistent until explicitly deleted).
fn send_with_ttl<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 str,
sync: &'life2 CacheService,
ttl: Duration,
) -> Pin<Box<dyn Future<Output = Result<(), CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn send_nx<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 str,
sync: &'life2 CacheService,
ttl: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<bool, CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn sync<'life0, 'life1, 'async_trait>(
id: &'life0 str,
sync: &'life1 CacheService,
) -> Pin<Box<dyn Future<Output = Result<Option<Self>, CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
id: &'life0 str,
sync: &'life1 CacheService,
) -> Pin<Box<dyn Future<Output = Result<(), CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scan<'life0, 'life1, 'async_trait>(
pattern_suffix: &'life0 str,
sync: &'life1 CacheService,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, CacheError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cache_id(id: &str, cache: &CacheService) -> String
Source§impl Clone for ErrorStats
impl Clone for ErrorStats
Source§fn clone(&self) -> ErrorStats
fn clone(&self) -> ErrorStats
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · 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 ErrorStats
impl Debug for ErrorStats
Source§impl Default for ErrorStats
impl Default for ErrorStats
Source§fn default() -> ErrorStats
fn default() -> ErrorStats
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for ErrorStats
impl<'de> Deserialize<'de> for ErrorStats
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 ErrorStats
impl RefUnwindSafe for ErrorStats
impl Send for ErrorStats
impl Sync for ErrorStats
impl Unpin for ErrorStats
impl UnsafeUnpin for ErrorStats
impl UnwindSafe for ErrorStats
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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