aws_sdk_sagemaker/protocol_serde/
shape_cluster_instance_storage_config.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub fn ser_cluster_instance_storage_config(
3    object_11: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
4    input: &crate::types::ClusterInstanceStorageConfig,
5) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
6    match input {
7        crate::types::ClusterInstanceStorageConfig::EbsVolumeConfig(inner) => {
8            #[allow(unused_mut)]
9            let mut object_1 = object_11.key("EbsVolumeConfig").start_object();
10            crate::protocol_serde::shape_cluster_ebs_volume_config::ser_cluster_ebs_volume_config(&mut object_1, inner)?;
11            object_1.finish();
12        }
13        crate::types::ClusterInstanceStorageConfig::Unknown => {
14            return Err(::aws_smithy_types::error::operation::SerializationError::unknown_variant(
15                "ClusterInstanceStorageConfig",
16            ))
17        }
18    }
19    Ok(())
20}
21
22pub(crate) fn de_cluster_instance_storage_config<'a, I>(
23    tokens: &mut ::std::iter::Peekable<I>,
24) -> ::std::result::Result<Option<crate::types::ClusterInstanceStorageConfig>, ::aws_smithy_json::deserialize::error::DeserializeError>
25where
26    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
27{
28    let mut variant = None;
29    match tokens.next().transpose()? {
30        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => return Ok(None),
31        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => loop {
32            match tokens.next().transpose()? {
33                Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
34                Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => {
35                    if let ::std::option::Option::Some(::std::result::Result::Ok(::aws_smithy_json::deserialize::Token::ValueNull { .. })) =
36                        tokens.peek()
37                    {
38                        let _ = tokens.next().expect("peek returned a token")?;
39                        continue;
40                    }
41                    let key = key.to_unescaped()?;
42                    if key == "__type" {
43                        ::aws_smithy_json::deserialize::token::skip_value(tokens)?;
44                        continue;
45                    }
46                    if variant.is_some() {
47                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
48                            "encountered mixed variants in union",
49                        ));
50                    }
51                    variant = match key.as_ref() {
52                        "EbsVolumeConfig" => Some(crate::types::ClusterInstanceStorageConfig::EbsVolumeConfig(
53                            crate::protocol_serde::shape_cluster_ebs_volume_config::de_cluster_ebs_volume_config(tokens)?.ok_or_else(|| {
54                                ::aws_smithy_json::deserialize::error::DeserializeError::custom("value for 'EbsVolumeConfig' cannot be null")
55                            })?,
56                        )),
57                        _ => {
58                            ::aws_smithy_json::deserialize::token::skip_value(tokens)?;
59                            Some(crate::types::ClusterInstanceStorageConfig::Unknown)
60                        }
61                    };
62                }
63                other => {
64                    return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
65                        "expected object key or end object, found: {:?}",
66                        other
67                    )))
68                }
69            }
70        },
71        _ => {
72            return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
73                "expected start object or null",
74            ))
75        }
76    }
77    if variant.is_none() {
78        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
79            "Union did not contain a valid variant.",
80        ));
81    }
82    Ok(variant)
83}