use conjure_object::serde::{ser, de};
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct UserId(pub String);
impl std::fmt::Display for UserId {
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(&self.0, fmt)
}
}
impl conjure_object::Plain for UserId {
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
conjure_object::Plain::fmt(&self.0, fmt)
}
}
impl conjure_object::FromPlain for UserId {
type Err = <String as conjure_object::FromPlain>::Err;
#[inline]
fn from_plain(s: &str) -> Result<UserId, Self::Err> {
conjure_object::FromPlain::from_plain(s).map(UserId)
}
}
impl std::ops::Deref for UserId {
type Target = String;
#[inline]
fn deref(&self) -> &String {
&self.0
}
}
impl std::ops::DerefMut for UserId {
#[inline]
fn deref_mut(&mut self) -> &mut String {
&mut self.0
}
}
impl ser::Serialize for UserId {
fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
where
S: ser::Serializer,
{
self.0.serialize(s)
}
}
impl<'de> de::Deserialize<'de> for UserId {
fn deserialize<D>(d: D) -> Result<UserId, D::Error>
where
D: de::Deserializer<'de>,
{
de::Deserialize::deserialize(d).map(UserId)
}
}