use std::borrow::Cow;
use serde::{Deserialize, Serialize};
use crate::common::{EdgeId, NodeId, TagId};
#[derive(Clone, Debug, Hash, PartialEq, Eq, Deserialize, Serialize)]
pub struct AnyId(Cow<'static, str>);
id_newtype::id_newtype!(AnyId, AnyIdInvalidFmt, node_id);
impl From<NodeId> for AnyId {
fn from(node_id: NodeId) -> Self {
let id = node_id.into_inner();
Self(id)
}
}
impl From<EdgeId> for AnyId {
fn from(edge_id: EdgeId) -> Self {
let id = edge_id.into_inner();
Self(id)
}
}
impl From<TagId> for AnyId {
fn from(tag_id: TagId) -> Self {
let id = tag_id.into_inner();
Self(id)
}
}