aws_sdk_sagemaker/protocol_serde/
shape_optimization_config.rs

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