made_core/value_objects/
support_confidence.rs1use serde::{Deserialize, Serialize};
2
3use crate::error::DomainError;
4
5#[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}