Skip to main content

made_core/value_objects/
evidence_reference.rs

1use serde::{Deserialize, Serialize};
2
3use crate::error::DomainError;
4
5/// Identity of one evidence item cited by a claim.
6#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
7#[serde(transparent)]
8pub struct EvidenceReference(String);
9
10impl EvidenceReference {
11    pub fn new(raw: impl Into<String>) -> Result<Self, DomainError> {
12        let raw = raw.into();
13        let value = raw.trim();
14        if value.is_empty() {
15            return Err(DomainError::EmptyField {
16                field: "evidence_support.reference",
17            });
18        }
19        Ok(Self(value.to_owned()))
20    }
21
22    #[must_use]
23    pub fn as_str(&self) -> &str {
24        &self.0
25    }
26}