pub fn ser_rule_condition(
encoder: &mut ::aws_smithy_cbor::Encoder,
input: &crate::types::RuleCondition,
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
encoder.map(1);
match input {
crate::types::RuleCondition::BooleanExpression(inner) => {
encoder.str("BooleanExpression");
crate::protocol_serde::shape_rule_boolean_expression::ser_rule_boolean_expression(encoder, inner)?;
}
crate::types::RuleCondition::StringExpression(inner) => {
encoder.str("StringExpression");
crate::protocol_serde::shape_rule_string_expression::ser_rule_string_expression(encoder, inner)?;
}
crate::types::RuleCondition::NumberExpression(inner) => {
encoder.str("NumberExpression");
crate::protocol_serde::shape_rule_number_expression::ser_rule_number_expression(encoder, inner)?;
}
crate::types::RuleCondition::IpExpression(inner) => {
encoder.str("IpExpression");
crate::protocol_serde::shape_rule_ip_expression::ser_rule_ip_expression(encoder, inner)?;
}
crate::types::RuleCondition::VerdictExpression(inner) => {
encoder.str("VerdictExpression");
crate::protocol_serde::shape_rule_verdict_expression::ser_rule_verdict_expression(encoder, inner)?;
}
crate::types::RuleCondition::DmarcExpression(inner) => {
encoder.str("DmarcExpression");
crate::protocol_serde::shape_rule_dmarc_expression::ser_rule_dmarc_expression(encoder, inner)?;
}
crate::types::RuleCondition::Unknown => {
return ::std::result::Result::Err(::aws_smithy_types::error::operation::SerializationError::unknown_variant("RuleCondition"))
}
}
::std::result::Result::Ok(())
}
pub(crate) fn de_rule_condition(
decoder: &mut ::aws_smithy_cbor::Decoder,
depth: u32,
) -> ::std::result::Result<crate::types::RuleCondition, ::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::RuleCondition, ::aws_smithy_cbor::decode::DeserializeError> {
Ok(match decoder.str()?.as_ref() {
"BooleanExpression" => crate::types::RuleCondition::BooleanExpression(
crate::protocol_serde::shape_rule_boolean_expression::de_rule_boolean_expression(decoder, depth + 1)?,
),
"StringExpression" => crate::types::RuleCondition::StringExpression(
crate::protocol_serde::shape_rule_string_expression::de_rule_string_expression(decoder, depth + 1)?,
),
"NumberExpression" => crate::types::RuleCondition::NumberExpression(
crate::protocol_serde::shape_rule_number_expression::de_rule_number_expression(decoder, depth + 1)?,
),
"IpExpression" => crate::types::RuleCondition::IpExpression(crate::protocol_serde::shape_rule_ip_expression::de_rule_ip_expression(
decoder,
depth + 1,
)?),
"VerdictExpression" => crate::types::RuleCondition::VerdictExpression(
crate::protocol_serde::shape_rule_verdict_expression::de_rule_verdict_expression(decoder, depth + 1)?,
),
"DmarcExpression" => crate::types::RuleCondition::DmarcExpression(
crate::protocol_serde::shape_rule_dmarc_expression::de_rule_dmarc_expression(decoder, depth + 1)?,
),
_ => {
decoder.skip()?;
crate::types::RuleCondition::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())),
}
}