1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use serde::de::*;
pub fn bool_deserializer<'de, D>(d: D) -> Result<bool, D::Error>
where
D: Deserializer<'de>,
{
let s = String::deserialize(d)?;
match &s[..] {
"true" => Ok(true),
"false" => Ok(false),
other => Err(D::Error::custom(format!(
"got {}, but expected `true` or `false`",
other
))),
}
}