acton_ern/model/
root.rs

1use std::fmt;
2use std::hash::Hash;
3
4use derive_more::{AsRef, From, Into};
5use mti::prelude::*;
6
7use crate::errors::ErnError;
8
9
10#[derive(AsRef, From, Into, Eq, Debug, PartialEq, Clone, Hash, Default, PartialOrd)]
11pub struct EntityRoot {
12    name: MagicTypeId,
13}
14
15impl EntityRoot {
16    pub fn name(&self) -> &MagicTypeId {
17        &self.name
18    }
19    pub fn as_str(&self) -> &str {
20        &self.name
21    }
22
23
24    pub fn new(value: String) -> Result<Self, ErnError> {
25        Ok(EntityRoot {
26            name: value.create_type_id::<V7>(),
27        })
28    }
29}
30
31impl fmt::Display for EntityRoot {
32    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33        let id = &self.name;
34        write!(f, "{id}")
35    }
36}
37
38//
39impl std::str::FromStr for EntityRoot {
40    type Err = ErnError;
41    fn from_str(s: &str) -> Result<Self, Self::Err> {
42        Ok(EntityRoot {
43            name: s.create_type_id::<V7>(),
44        })
45    }
46}