openehr-lang 0.0.128

openEHR LANG BMM/P_BMM object model, generated from BMM: generations v1_0 (LANG 1.0.0) and v1_1 (LANG 1.1.0, current; the stable BMM v2.x unit beside the paused BMM3 unit), plus hand-written ODIN/BEL/EL readers
Documentation
// @generated by openehr-codegen from BMM (`BMM_SCHEMA_METADATA_KEY`) — DO NOT EDIT.
// SPDX-FileCopyrightText: Cadasto B.V.
// SPDX-FileCopyrightText: openEHR Foundation
// SPDX-License-Identifier: Apache-2.0

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

/// The openEHR `BMM_SCHEMA_METADATA_KEY` class (the vendored BMM carries no documentation for it).
#[doc(alias = "BMM_SCHEMA_METADATA_KEY")]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum BmmSchemaMetadataKey {
    /// `bmm_version`
    BmmVersion,
    /// `model_publisher`
    ModelPublisher,
    /// `schema_name`
    SchemaName,
    /// `model_release`
    ModelRelease,
    /// `schema_revision`
    SchemaRevision,
    /// `schema_lifecycle_state`
    SchemaLifecycleState,
    /// `schema_description`
    SchemaDescription,
    /// `schema_path`
    SchemaPath,
    /// A value outside the `BMM_SCHEMA_METADATA_KEY` 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 BmmSchemaMetadataKey {
    /// The wire string of this constant (the verbatim token for
    /// [`Self::Other`]).
    #[must_use]
    pub fn as_str(&self) -> &str {
        match self {
            Self::BmmVersion => "bmm_version",
            Self::ModelPublisher => "model_publisher",
            Self::SchemaName => "schema_name",
            Self::ModelRelease => "model_release",
            Self::SchemaRevision => "schema_revision",
            Self::SchemaLifecycleState => "schema_lifecycle_state",
            Self::SchemaDescription => "schema_description",
            Self::SchemaPath => "schema_path",
            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 {
            "bmm_version" => Self::BmmVersion,
            "model_publisher" => Self::ModelPublisher,
            "schema_name" => Self::SchemaName,
            "model_release" => Self::ModelRelease,
            "schema_revision" => Self::SchemaRevision,
            "schema_lifecycle_state" => Self::SchemaLifecycleState,
            "schema_description" => Self::SchemaDescription,
            "schema_path" => Self::SchemaPath,
            _ => Self::Other(__s.to_owned()),
        }
    }
}

impl ::core::convert::TryFrom<&str> for BmmSchemaMetadataKey {
    type Error = UnknownBmmSchemaMetadataKey;

    /// # Errors
    /// Returns [`UnknownBmmSchemaMetadataKey`] when `__s` is not a `BMM_SCHEMA_METADATA_KEY` value
    /// (unlike [`Self::from_wire`], which is total).
    fn try_from(__s: &str) -> ::core::result::Result<Self, Self::Error> {
        match __s {
            "bmm_version" => ::core::result::Result::Ok(Self::BmmVersion),
            "model_publisher" => ::core::result::Result::Ok(Self::ModelPublisher),
            "schema_name" => ::core::result::Result::Ok(Self::SchemaName),
            "model_release" => ::core::result::Result::Ok(Self::ModelRelease),
            "schema_revision" => ::core::result::Result::Ok(Self::SchemaRevision),
            "schema_lifecycle_state" => ::core::result::Result::Ok(Self::SchemaLifecycleState),
            "schema_description" => ::core::result::Result::Ok(Self::SchemaDescription),
            "schema_path" => ::core::result::Result::Ok(Self::SchemaPath),
            _ => ::core::result::Result::Err(UnknownBmmSchemaMetadataKey(__s.to_owned())),
        }
    }
}

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

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

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