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
38impl 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}