aws-sdk-mailmanager 1.89.0

AWS SDK for MailManager
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub fn ser_policy_condition(
    encoder: &mut ::aws_smithy_cbor::Encoder,
    input: &crate::types::PolicyCondition,
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
    encoder.map(1);
    match input {
        crate::types::PolicyCondition::StringExpression(inner) => {
            encoder.str("StringExpression");
            crate::protocol_serde::shape_ingress_string_expression::ser_ingress_string_expression(encoder, inner)?;
        }
        crate::types::PolicyCondition::IpExpression(inner) => {
            encoder.str("IpExpression");
            crate::protocol_serde::shape_ingress_ipv4_expression::ser_ingress_ipv4_expression(encoder, inner)?;
        }
        crate::types::PolicyCondition::Ipv6Expression(inner) => {
            encoder.str("Ipv6Expression");
            crate::protocol_serde::shape_ingress_ipv6_expression::ser_ingress_ipv6_expression(encoder, inner)?;
        }
        crate::types::PolicyCondition::TlsExpression(inner) => {
            encoder.str("TlsExpression");
            crate::protocol_serde::shape_ingress_tls_protocol_expression::ser_ingress_tls_protocol_expression(encoder, inner)?;
        }
        crate::types::PolicyCondition::BooleanExpression(inner) => {
            encoder.str("BooleanExpression");
            crate::protocol_serde::shape_ingress_boolean_expression::ser_ingress_boolean_expression(encoder, inner)?;
        }
        crate::types::PolicyCondition::Unknown => {
            return ::std::result::Result::Err(::aws_smithy_types::error::operation::SerializationError::unknown_variant(
                "PolicyCondition",
            ))
        }
    }
    ::std::result::Result::Ok(())
}

pub(crate) fn de_policy_condition(
    decoder: &mut ::aws_smithy_cbor::Decoder,
    depth: u32,
) -> ::std::result::Result<crate::types::PolicyCondition, ::aws_smithy_cbor::decode::DeserializeError> {
    if depth >= 128u32 {
        return Err(::aws_smithy_cbor::decode::DeserializeError::custom(
            "maximum nesting depth exceeded",
            decoder.position(),
        ));
    }

    #[allow(unused_variables)]
    fn pair(
        decoder: &mut ::aws_smithy_cbor::Decoder,
        depth: u32,
    ) -> ::std::result::Result<crate::types::PolicyCondition, ::aws_smithy_cbor::decode::DeserializeError> {
        Ok(match decoder.str()?.as_ref() {
            "StringExpression" => crate::types::PolicyCondition::StringExpression(
                crate::protocol_serde::shape_ingress_string_expression::de_ingress_string_expression(decoder, depth + 1)?,
            ),
            "IpExpression" => crate::types::PolicyCondition::IpExpression(
                crate::protocol_serde::shape_ingress_ipv4_expression::de_ingress_ipv4_expression(decoder, depth + 1)?,
            ),
            "Ipv6Expression" => crate::types::PolicyCondition::Ipv6Expression(
                crate::protocol_serde::shape_ingress_ipv6_expression::de_ingress_ipv6_expression(decoder, depth + 1)?,
            ),
            "TlsExpression" => crate::types::PolicyCondition::TlsExpression(
                crate::protocol_serde::shape_ingress_tls_protocol_expression::de_ingress_tls_protocol_expression(decoder, depth + 1)?,
            ),
            "BooleanExpression" => crate::types::PolicyCondition::BooleanExpression(
                crate::protocol_serde::shape_ingress_boolean_expression::de_ingress_boolean_expression(decoder, depth + 1)?,
            ),
            _ => {
                decoder.skip()?;
                crate::types::PolicyCondition::Unknown
            }
        })
    }

    match decoder.map()? {
        None => {
            let variant = pair(decoder, depth)?;
            match decoder.datatype()? {
                ::aws_smithy_cbor::data::Type::Break => {
                    decoder.skip()?;
                    Ok(variant)
                }
                ty => Err(::aws_smithy_cbor::decode::DeserializeError::unexpected_union_variant(
                    ty,
                    decoder.position(),
                )),
            }
        }
        Some(1) => pair(decoder, depth),
        Some(_) => Err(::aws_smithy_cbor::decode::DeserializeError::mixed_union_variants(decoder.position())),
    }
}