fixed_len_str 0.3.3

A procedural macro for create a smart pointer to str backed by a fixed size array,with the size given by the tokens.
Documentation
    use serde::{Serialize, Deserialize, Serializer, Deserializer};
    use serde::de;

    /// Only expanded in the original crate with the feature "serde_support" enabled.
    impl Serialize for FixedStr$len {
        fn serialize<S: Serializer>(&'_ self, serializer: S) -> Result<S::Ok, S::Error> {
            serializer.serialize_str(&self[..])
        }
    }

    struct FixedStr$lenVisitor;

    impl<'de> de::Visitor<'de> for FixedStr$lenVisitor {
        type Value = FixedStr$len;

        fn expecting<'a>(&'a self, formatter: &'a mut Formatter) -> FmtResult {
            formatter.write_str("a string less or equal to $len bytes")
        }

        fn visit_str<E: de::Error>(self, s: &'_ str) -> Result<Self::Value, E> {
            if s.len() <= $len {
                Ok(FixedStr$len::from(s))
            } else {
                Err(de::Error::invalid_value(de::Unexpected::Str(s), &self))
            }
        }
    }

    /// Only expanded in the original crate with the feature "serde_support" enabled.
    impl<'de> Deserialize<'de> for FixedStr$len {
        fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
            deserializer.deserialize_str(FixedStr$lenVisitor)
        }
    }