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 ))), } }