use std::{borrow::Borrow, convert::Infallible, str::FromStr};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize, JsonSchema,
)]
pub struct NodeId(pub(crate) String);
impl FromStr for NodeId {
type Err = Infallible;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(Self(s.to_owned()))
}
}
impl From<String> for NodeId {
fn from(id: String) -> Self {
Self(id)
}
}
impl std::fmt::Display for NodeId {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(&self.0, f)
}
}
impl AsRef<str> for NodeId {
fn as_ref(&self) -> &str {
&self.0
}
}
#[derive(
Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize, JsonSchema,
)]
pub struct OperatorId(String);
impl FromStr for OperatorId {
type Err = Infallible;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(Self(s.to_owned()))
}
}
impl From<String> for OperatorId {
fn from(id: String) -> Self {
Self(id)
}
}
impl std::fmt::Display for OperatorId {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(&self.0, f)
}
}
impl AsRef<str> for OperatorId {
fn as_ref(&self) -> &str {
&self.0
}
}
#[derive(
Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize, JsonSchema,
)]
pub struct DataId(String);
impl From<DataId> for String {
fn from(id: DataId) -> Self {
id.0
}
}
impl From<String> for DataId {
fn from(id: String) -> Self {
Self(id)
}
}
impl std::fmt::Display for DataId {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(&self.0, f)
}
}
impl std::ops::Deref for DataId {
type Target = String;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl AsRef<String> for DataId {
fn as_ref(&self) -> &String {
&self.0
}
}
impl AsRef<str> for DataId {
fn as_ref(&self) -> &str {
&self.0
}
}
impl Borrow<String> for DataId {
fn borrow(&self) -> &String {
&self.0
}
}
impl Borrow<str> for DataId {
fn borrow(&self) -> &str {
&self.0
}
}