diff --git a/src/core/utils/string.rs b/src/core/utils/string.rs index 12b1ef2e..854d5d4b 100644 --- a/src/core/utils/string.rs +++ b/src/core/utils/string.rs @@ -1,4 +1,5 @@ mod between; +pub mod de; mod split; mod tests; mod unquote; diff --git a/src/core/utils/string/de.rs b/src/core/utils/string/de.rs new file mode 100644 index 00000000..08eb403c --- /dev/null +++ b/src/core/utils/string/de.rs @@ -0,0 +1,22 @@ +use std::fmt; + +use serde::de::{Deserializer, Error, Visitor}; + +struct ToLowercase; + +#[inline] +pub fn to_lowercase<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + deserializer.deserialize_string(ToLowercase) +} + +impl Visitor<'_> for ToLowercase { + type Value = String; + + #[inline] + fn visit_str(self, v: &str) -> Result { Ok(v.to_lowercase()) } + + fn expecting(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str("String") } +}