fn expression_from_str()

in license-scan/src/main.rs [228:250]


fn expression_from_str<'de, D>(deserializer: D) -> Result<Expression, D::Error>
where
    D: Deserializer<'de>,
{
    struct Visitor;

    impl<'de> serde::de::Visitor<'de> for Visitor {
        type Value = Expression;

        fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
            formatter.write_str("a string")
        }

        fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
        where
            E: serde::de::Error,
        {
            Expression::parse(s).map_err(|err| E::custom(err.to_string()))
        }
    }

    deserializer.deserialize_str(Visitor)
}