cfn 0.0.7

Type-safe representations for AWS CloudFormation templates, resources and properties
Documentation
use serde::{Serializer, Deserializer, Deserialize};
use serde::de::Unexpected;

use super::{SerializeValue, DeserializeValue};

impl SerializeValue for bool {
    fn serialize<S: Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
        match *self {
            true => s.serialize_str("true"),
            false => s.serialize_str("false")
        }
    }
}

impl DeserializeValue for bool {
    fn deserialize<'de, D: Deserializer<'de>>(d: D) -> Result<bool, D::Error> {
        match Deserialize::deserialize(d)? {
            "True" | "true" => Ok(true),
            "False" | "false" => Ok(true),
            string => {
                Err(::serde::de::Error::invalid_value(Unexpected::Str(string),
                    &"a boolean identifier"))
            }
        }
    }
}