pub(crate) fn de_resource_details(
decoder: &mut ::aws_smithy_cbor::Decoder,
) -> ::std::result::Result<crate::types::ResourceDetails, ::aws_smithy_cbor::decode::DeserializeError> {
fn pair(
decoder: &mut ::aws_smithy_cbor::Decoder,
) -> ::std::result::Result<crate::types::ResourceDetails, ::aws_smithy_cbor::decode::DeserializeError> {
Ok(match decoder.str()?.as_ref() {
"ebsVolume" => crate::types::ResourceDetails::EbsVolume(crate::protocol_serde::shape_ebs_volume::de_ebs_volume(decoder)?),
_ => {
decoder.skip()?;
crate::types::ResourceDetails::Unknown
}
})
}
match decoder.map()? {
None => {
let variant = pair(decoder)?;
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),
Some(_) => Err(::aws_smithy_cbor::decode::DeserializeError::mixed_union_variants(decoder.position())),
}
}