openehr-term 0.0.1

openEHR TERM 3.1.0 terminology data model, generated from BMM; vendored terminology XML in assets/
Documentation
// @generated by openehr-codegen from BMM (`TERMINOLOGY_STATUS`) — DO NOT EDIT.

//! The openEHR `TERMINOLOGY_STATUS` spec class, generated from the vendored BMM
//! meta-model.

/// Enumeration of possible lifecycle states of any part of the terminomlogy.
#[doc(alias = "TERMINOLOGY_STATUS")]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum TerminologyStatus {
    /// `trial`
    Trial,
    /// `active`
    Active,
    /// `retired`
    Retired,
    /// A value outside the `TERMINOLOGY_STATUS` constant set.
    ///
    /// NOTE: no openEHR spec governs an out-of-set value — our own
    /// tolerance-preserving design (`BMM_ENUMERATION` defines only the listed
    /// constants), retained so this enum's wire form stays byte-identical to
    /// the bare `String` it replaces.
    Other(String),
}

impl TerminologyStatus {
    /// The wire string of this constant (the verbatim token for
    /// [`Self::Other`]).
    #[must_use]
    pub fn as_str(&self) -> &str {
        match self {
            Self::Trial => "trial",
            Self::Active => "active",
            Self::Retired => "retired",
            Self::Other(__s) => __s.as_str(),
        }
    }

    /// This constant for a wire string, tolerating an unknown token
    /// as [`Self::Other`] (total — never fails).
    #[must_use]
    pub fn from_wire(__s: &str) -> Self {
        match __s {
            "trial" => Self::Trial,
            "active" => Self::Active,
            "retired" => Self::Retired,
            _ => Self::Other(__s.to_owned()),
        }
    }
}

impl ::core::convert::TryFrom<&str> for TerminologyStatus {
    type Error = UnknownTerminologyStatus;

    /// # Errors
    /// Returns [`UnknownTerminologyStatus`] when `__s` is not a `TERMINOLOGY_STATUS` value
    /// (unlike [`Self::from_wire`], which is total).
    fn try_from(__s: &str) -> ::core::result::Result<Self, Self::Error> {
        match __s {
            "trial" => ::core::result::Result::Ok(Self::Trial),
            "active" => ::core::result::Result::Ok(Self::Active),
            "retired" => ::core::result::Result::Ok(Self::Retired),
            _ => ::core::result::Result::Err(UnknownTerminologyStatus(__s.to_owned())),
        }
    }
}

/// The error returned by [`TerminologyStatus::try_from`] for a value outside the `TERMINOLOGY_STATUS`
/// constant set.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct UnknownTerminologyStatus(pub String);

impl ::core::fmt::Display for UnknownTerminologyStatus {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        ::core::write!(f, "unknown TERMINOLOGY_STATUS value: {:?}", self.0)
    }
}

impl ::std::error::Error for UnknownTerminologyStatus {}