reep-id-string 0.2.0

[deprecated] plain string impl. of reep::types::Id with optional serialisation support
Documentation
use serde::{Serialize, Deserialize, Serializer, Deserializer, Error};
use serde::de::Visitor as DeVisitor;
use super::DefaultId;

impl Serialize for DefaultId {
    fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
        where S: Serializer,
    {
        serializer.serialize_str(&self.0[..])
    }
}

impl Deserialize for DefaultId {
    fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
        where D: Deserializer
    {
        deserializer.deserialize(DefaultIdVisitor)
    }
}

struct DefaultIdVisitor;

impl DeVisitor for DefaultIdVisitor {
    type Value = DefaultId;

    #[inline]
    fn visit_i64<E>(&mut self, v: i64) -> Result<Self::Value, E>
        where E: Error,
    {
        Ok(DefaultId::new(v.to_string()))
    }

    #[inline]
    fn visit_u64<E>(&mut self, v: u64) -> Result<Self::Value, E>
        where E: Error,
    {
        Ok(DefaultId::new(v.to_string()))
    }

    #[inline]
    fn visit_str<E>(&mut self, v: &str) -> Result<Self::Value, E>
       where E: Error,
    {
       self.visit_string(v.into())
    }


    fn visit_string<E>(&mut self, v: String) -> Result<Self::Value, E>
        where E: Error,
    {
        Ok(DefaultId::new(v))
    }

}