1use std::{fmt, sync::Arc};
2
3use serde::{Deserialize, Serialize};
4
5pub const REF_ID_ATTRIBUTE_NAME: &str = "Rojo_Id";
6pub const REF_POINTER_ATTRIBUTE_PREFIX: &str = "Rojo_Target_";
7
8#[derive(Debug, Default, PartialEq, Hash, Clone, Serialize, Deserialize, Eq)]
12pub struct RojoRef(Arc<String>);
13
14impl RojoRef {
15 #[inline]
16 pub fn new(id: String) -> Self {
17 Self(Arc::from(id))
18 }
19
20 #[inline]
21 pub fn as_str(&self) -> &str {
22 self.0.as_str()
23 }
24}
25
26impl fmt::Display for RojoRef {
27 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
28 write!(f, "{}", self.as_str())
29 }
30}