Skip to main content

made_core/value_objects/
support_confidence.rs

1use serde::{Deserialize, Serialize};
2
3use crate::error::DomainError;
4
5/// Confidence percentage attached to an evidence-support decision.
6#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
7#[serde(transparent)]
8pub struct SupportConfidence(u8);
9
10impl SupportConfidence {
11    pub fn new(percent: u8) -> Result<Self, DomainError> {
12        if percent > 100 {
13            return Err(DomainError::OutOfRange {
14                field: "evidence_support.confidence",
15                value: f64::from(percent),
16                min: 0.0,
17                max: 100.0,
18            });
19        }
20        Ok(Self(percent))
21    }
22
23    #[must_use]
24    pub const fn percent(self) -> u8 {
25        self.0
26    }
27
28    #[must_use]
29    pub const fn meets(self, minimum_percent: u8) -> bool {
30        self.0 >= minimum_percent
31    }
32}