aws_sdk_sagemaker/protocol_serde/
shape_cluster_instance_storage_config.rs1pub 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}