Client Test

Client Test

rev. e063993ca0ab793f44c575dbe707d50a5e3e2406 (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/operation/simple_scalar_properties.rs

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `SimpleScalarProperties`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct SimpleScalarProperties;
    6      6   
impl SimpleScalarProperties {
    7      7   
    /// Creates a new `SimpleScalarProperties`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::simple_scalar_properties::SimpleScalarPropertiesInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::simple_scalar_properties::SimpleScalarPropertiesInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::simple_scalar_properties::SimpleScalarPropertiesError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -110,114 +172,177 @@
  130    134   
                crate::operation::simple_scalar_properties::SimpleScalarPropertiesError,
  131    135   
            >::new());
  132    136   
  133    137   
        ::std::borrow::Cow::Owned(rcb)
  134    138   
    }
  135    139   
}
  136    140   
  137    141   
#[derive(Debug)]
  138    142   
struct SimpleScalarPropertiesResponseDeserializer;
  139    143   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for SimpleScalarPropertiesResponseDeserializer {
  140         -
    fn deserialize_nonstreaming(
         144  +
    fn deserialize_nonstreaming_with_config(
  141    145   
        &self,
  142    146   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         147  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  143    148   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  144    149   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  145    150   
        let headers = response.headers();
  146    151   
        let body = response.body().bytes().expect("body loaded");
  147    152   
        #[allow(unused_mut)]
  148    153   
        let mut force_error = false;
  149    154   
  150    155   
        let parse_result = if !success && status != 200 || force_error {
  151    156   
            crate::protocol_serde::shape_simple_scalar_properties::de_simple_scalar_properties_http_error(status, headers, body)
  152    157   
        } else {
@@ -506,511 +566,575 @@
  526    531   
            .expect("the config must have a deserializer");
  527    532   
  528    533   
        let parsed = de.deserialize_streaming(&mut http_response);
  529    534   
        let parsed = parsed.unwrap_or_else(|| {
  530    535   
            let http_response = http_response.map(|body| {
  531    536   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  532    537   
                    body.bytes().unwrap(),
  533    538   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  534    539   
                )))
  535    540   
            });
  536         -
            de.deserialize_nonstreaming(&http_response)
         541  +
            // Build a config bag with the protocol for schema-based deserialization
         542  +
            #[allow(unused_mut)]
         543  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         544  +
         545  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  537    546   
        });
  538    547   
        let parsed = parsed
  539    548   
            .expect("should be successful response")
  540    549   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  541    550   
            .unwrap();
  542    551   
        ::pretty_assertions::assert_eq!(
  543    552   
            parsed.true_boolean_value,
  544    553   
            expected_output.true_boolean_value,
  545    554   
            "Unexpected value for `true_boolean_value`"
  546    555   
        );
@@ -586,595 +646,659 @@
  606    615   
            .expect("the config must have a deserializer");
  607    616   
  608    617   
        let parsed = de.deserialize_streaming(&mut http_response);
  609    618   
        let parsed = parsed.unwrap_or_else(|| {
  610    619   
            let http_response = http_response.map(|body| {
  611    620   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  612    621   
                    body.bytes().unwrap(),
  613    622   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  614    623   
                )))
  615    624   
            });
  616         -
            de.deserialize_nonstreaming(&http_response)
         625  +
            // Build a config bag with the protocol for schema-based deserialization
         626  +
            #[allow(unused_mut)]
         627  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         628  +
         629  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  617    630   
        });
  618    631   
        let parsed = parsed
  619    632   
            .expect("should be successful response")
  620    633   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  621    634   
            .unwrap();
  622    635   
        ::pretty_assertions::assert_eq!(
  623    636   
            parsed.true_boolean_value,
  624    637   
            expected_output.true_boolean_value,
  625    638   
            "Unexpected value for `true_boolean_value`"
  626    639   
        );
@@ -658,671 +718,735 @@
  678    691   
            .expect("the config must have a deserializer");
  679    692   
  680    693   
        let parsed = de.deserialize_streaming(&mut http_response);
  681    694   
        let parsed = parsed.unwrap_or_else(|| {
  682    695   
            let http_response = http_response.map(|body| {
  683    696   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  684    697   
                    body.bytes().unwrap(),
  685    698   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  686    699   
                )))
  687    700   
            });
  688         -
            de.deserialize_nonstreaming(&http_response)
         701  +
            // Build a config bag with the protocol for schema-based deserialization
         702  +
            #[allow(unused_mut)]
         703  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         704  +
         705  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  689    706   
        });
  690    707   
        let parsed = parsed
  691    708   
            .expect("should be successful response")
  692    709   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  693    710   
            .unwrap();
  694    711   
        ::pretty_assertions::assert_eq!(
  695    712   
            parsed.true_boolean_value,
  696    713   
            expected_output.true_boolean_value,
  697    714   
            "Unexpected value for `true_boolean_value`"
  698    715   
        );
@@ -739,756 +799,820 @@
  759    776   
            .expect("the config must have a deserializer");
  760    777   
  761    778   
        let parsed = de.deserialize_streaming(&mut http_response);
  762    779   
        let parsed = parsed.unwrap_or_else(|| {
  763    780   
            let http_response = http_response.map(|body| {
  764    781   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  765    782   
                    body.bytes().unwrap(),
  766    783   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  767    784   
                )))
  768    785   
            });
  769         -
            de.deserialize_nonstreaming(&http_response)
         786  +
            // Build a config bag with the protocol for schema-based deserialization
         787  +
            #[allow(unused_mut)]
         788  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         789  +
         790  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  770    791   
        });
  771    792   
        let parsed = parsed
  772    793   
            .expect("should be successful response")
  773    794   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  774    795   
            .unwrap();
  775    796   
        ::pretty_assertions::assert_eq!(
  776    797   
            parsed.true_boolean_value,
  777    798   
            expected_output.true_boolean_value,
  778    799   
            "Unexpected value for `true_boolean_value`"
  779    800   
        );
@@ -820,841 +880,905 @@
  840    861   
            .expect("the config must have a deserializer");
  841    862   
  842    863   
        let parsed = de.deserialize_streaming(&mut http_response);
  843    864   
        let parsed = parsed.unwrap_or_else(|| {
  844    865   
            let http_response = http_response.map(|body| {
  845    866   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  846    867   
                    body.bytes().unwrap(),
  847    868   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  848    869   
                )))
  849    870   
            });
  850         -
            de.deserialize_nonstreaming(&http_response)
         871  +
            // Build a config bag with the protocol for schema-based deserialization
         872  +
            #[allow(unused_mut)]
         873  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         874  +
         875  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  851    876   
        });
  852    877   
        let parsed = parsed
  853    878   
            .expect("should be successful response")
  854    879   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  855    880   
            .unwrap();
  856    881   
        ::pretty_assertions::assert_eq!(
  857    882   
            parsed.true_boolean_value,
  858    883   
            expected_output.true_boolean_value,
  859    884   
            "Unexpected value for `true_boolean_value`"
  860    885   
        );
@@ -901,926 +961,990 @@
  921    946   
            .expect("the config must have a deserializer");
  922    947   
  923    948   
        let parsed = de.deserialize_streaming(&mut http_response);
  924    949   
        let parsed = parsed.unwrap_or_else(|| {
  925    950   
            let http_response = http_response.map(|body| {
  926    951   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  927    952   
                    body.bytes().unwrap(),
  928    953   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  929    954   
                )))
  930    955   
            });
  931         -
            de.deserialize_nonstreaming(&http_response)
         956  +
            // Build a config bag with the protocol for schema-based deserialization
         957  +
            #[allow(unused_mut)]
         958  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         959  +
         960  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  932    961   
        });
  933    962   
        let parsed = parsed
  934    963   
            .expect("should be successful response")
  935    964   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  936    965   
            .unwrap();
  937    966   
        ::pretty_assertions::assert_eq!(
  938    967   
            parsed.true_boolean_value,
  939    968   
            expected_output.true_boolean_value,
  940    969   
            "Unexpected value for `true_boolean_value`"
  941    970   
        );
@@ -981,1010 +1041,1074 @@
 1001   1030   
            .expect("the config must have a deserializer");
 1002   1031   
 1003   1032   
        let parsed = de.deserialize_streaming(&mut http_response);
 1004   1033   
        let parsed = parsed.unwrap_or_else(|| {
 1005   1034   
            let http_response = http_response.map(|body| {
 1006   1035   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
 1007   1036   
                    body.bytes().unwrap(),
 1008   1037   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
 1009   1038   
                )))
 1010   1039   
            });
 1011         -
            de.deserialize_nonstreaming(&http_response)
        1040  +
            // Build a config bag with the protocol for schema-based deserialization
        1041  +
            #[allow(unused_mut)]
        1042  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
        1043  +
        1044  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
 1012   1045   
        });
 1013   1046   
        let parsed = parsed
 1014   1047   
            .expect("should be successful response")
 1015   1048   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
 1016   1049   
            .unwrap();
 1017   1050   
        ::pretty_assertions::assert_eq!(
 1018   1051   
            parsed.true_boolean_value,
 1019   1052   
            expected_output.true_boolean_value,
 1020   1053   
            "Unexpected value for `true_boolean_value`"
 1021   1054   
        );
@@ -1064,1097 +1124,1161 @@
 1084   1117   
            .expect("the config must have a deserializer");
 1085   1118   
 1086   1119   
        let parsed = de.deserialize_streaming(&mut http_response);
 1087   1120   
        let parsed = parsed.unwrap_or_else(|| {
 1088   1121   
            let http_response = http_response.map(|body| {
 1089   1122   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
 1090   1123   
                    body.bytes().unwrap(),
 1091   1124   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
 1092   1125   
                )))
 1093   1126   
            });
 1094         -
            de.deserialize_nonstreaming(&http_response)
        1127  +
            // Build a config bag with the protocol for schema-based deserialization
        1128  +
            #[allow(unused_mut)]
        1129  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
        1130  +
        1131  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
 1095   1132   
        });
 1096   1133   
        let parsed = parsed
 1097   1134   
            .expect("should be successful response")
 1098   1135   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
 1099   1136   
            .unwrap();
 1100   1137   
        ::pretty_assertions::assert_eq!(
 1101   1138   
            parsed.true_boolean_value,
 1102   1139   
            expected_output.true_boolean_value,
 1103   1140   
            "Unexpected value for `true_boolean_value`"
 1104   1141   
        );

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/operation/simple_scalar_properties/_simple_scalar_properties_input.rs

@@ -51,51 +201,201 @@
   71     71   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   72     72   
    "SimpleScalarPropertiesInput",
   73     73   
);
   74     74   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_TRUE_BOOLEAN_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   75     75   
    ::aws_smithy_schema::ShapeId::from_static(
   76     76   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$trueBooleanValue",
   77     77   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   78     78   
        "SimpleScalarPropertiesInput",
   79     79   
    ),
   80     80   
    ::aws_smithy_schema::ShapeType::Boolean,
   81         -
    "true_boolean_value",
          81  +
    "trueBooleanValue",
   82     82   
    0,
   83     83   
);
   84     84   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_FALSE_BOOLEAN_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   85     85   
    ::aws_smithy_schema::ShapeId::from_static(
   86     86   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$falseBooleanValue",
   87     87   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   88     88   
        "SimpleScalarPropertiesInput",
   89     89   
    ),
   90     90   
    ::aws_smithy_schema::ShapeType::Boolean,
   91         -
    "false_boolean_value",
          91  +
    "falseBooleanValue",
   92     92   
    1,
   93     93   
);
   94     94   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_BYTE_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$byteValue",
   97     97   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   98     98   
        "SimpleScalarPropertiesInput",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::Byte,
  101         -
    "byte_value",
         101  +
    "byteValue",
  102    102   
    2,
  103    103   
);
  104    104   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_DOUBLE_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$doubleValue",
  107    107   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  108    108   
        "SimpleScalarPropertiesInput",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::Double,
  111         -
    "double_value",
         111  +
    "doubleValue",
  112    112   
    3,
  113    113   
);
  114    114   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_FLOAT_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  115    115   
    ::aws_smithy_schema::ShapeId::from_static(
  116    116   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$floatValue",
  117    117   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  118    118   
        "SimpleScalarPropertiesInput",
  119    119   
    ),
  120    120   
    ::aws_smithy_schema::ShapeType::Float,
  121         -
    "float_value",
         121  +
    "floatValue",
  122    122   
    4,
  123    123   
);
  124    124   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_INTEGER_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  125    125   
    ::aws_smithy_schema::ShapeId::from_static(
  126    126   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$integerValue",
  127    127   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  128    128   
        "SimpleScalarPropertiesInput",
  129    129   
    ),
  130    130   
    ::aws_smithy_schema::ShapeType::Integer,
  131         -
    "integer_value",
         131  +
    "integerValue",
  132    132   
    5,
  133    133   
);
  134    134   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_LONG_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$longValue",
  137    137   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  138    138   
        "SimpleScalarPropertiesInput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::Long,
  141         -
    "long_value",
         141  +
    "longValue",
  142    142   
    6,
  143    143   
);
  144    144   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_SHORT_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$shortValue",
  147    147   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  148    148   
        "SimpleScalarPropertiesInput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::Short,
  151         -
    "short_value",
         151  +
    "shortValue",
  152    152   
    7,
  153    153   
);
  154    154   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_STRING_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  155    155   
    ::aws_smithy_schema::ShapeId::from_static(
  156    156   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$stringValue",
  157    157   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  158    158   
        "SimpleScalarPropertiesInput",
  159    159   
    ),
  160    160   
    ::aws_smithy_schema::ShapeType::String,
  161         -
    "string_value",
         161  +
    "stringValue",
  162    162   
    8,
  163    163   
);
  164    164   
static SIMPLESCALARPROPERTIESINPUT_MEMBER_BLOB_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  165    165   
    ::aws_smithy_schema::ShapeId::from_static(
  166    166   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesInput$blobValue",
  167    167   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  168    168   
        "SimpleScalarPropertiesInput",
  169    169   
    ),
  170    170   
    ::aws_smithy_schema::ShapeType::Blob,
  171         -
    "blob_value",
         171  +
    "blobValue",
  172    172   
    9,
  173    173   
);
  174    174   
static SIMPLESCALARPROPERTIESINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  175    175   
    SIMPLESCALARPROPERTIESINPUT_SCHEMA_ID,
  176    176   
    ::aws_smithy_schema::ShapeType::Structure,
  177    177   
    &[
  178    178   
        &SIMPLESCALARPROPERTIESINPUT_MEMBER_TRUE_BOOLEAN_VALUE,
  179    179   
        &SIMPLESCALARPROPERTIESINPUT_MEMBER_FALSE_BOOLEAN_VALUE,
  180    180   
        &SIMPLESCALARPROPERTIESINPUT_MEMBER_BYTE_VALUE,
  181    181   
        &SIMPLESCALARPROPERTIESINPUT_MEMBER_DOUBLE_VALUE,
@@ -205,205 +317,328 @@
  225    225   
            ser.write_string(&SIMPLESCALARPROPERTIESINPUT_MEMBER_STRING_VALUE, val)?;
  226    226   
        }
  227    227   
        if let Some(ref val) = self.blob_value {
  228    228   
            ser.write_blob(&SIMPLESCALARPROPERTIESINPUT_MEMBER_BLOB_VALUE, val)?;
  229    229   
        }
  230    230   
        Ok(())
  231    231   
    }
  232    232   
}
  233    233   
impl SimpleScalarPropertiesInput {
  234    234   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  235         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  236         -
        deserializer: &mut D,
         235  +
    pub fn deserialize(
         236  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  237    237   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  238    238   
        #[allow(unused_variables, unused_mut)]
  239    239   
        let mut builder = Self::builder();
  240    240   
        #[allow(
  241    241   
            unused_variables,
  242    242   
            unreachable_code,
  243    243   
            clippy::single_match,
  244    244   
            clippy::match_single_binding,
  245    245   
            clippy::diverging_sub_expression
  246    246   
        )]
  247         -
        deserializer.read_struct(&SIMPLESCALARPROPERTIESINPUT_SCHEMA, (), |_, member, deser| {
         247  +
        deserializer.read_struct(&SIMPLESCALARPROPERTIESINPUT_SCHEMA, &mut |member, deser| {
  248    248   
            match member.member_index() {
  249    249   
                Some(0) => {
  250    250   
                    builder.true_boolean_value = Some(deser.read_boolean(member)?);
  251    251   
                }
  252    252   
                Some(1) => {
  253    253   
                    builder.false_boolean_value = Some(deser.read_boolean(member)?);
  254    254   
                }
  255    255   
                Some(2) => {
  256    256   
                    builder.byte_value = Some(deser.read_byte(member)?);
  257    257   
                }
  258    258   
                Some(3) => {
  259    259   
                    builder.double_value = Some(deser.read_double(member)?);
  260    260   
                }
  261    261   
                Some(4) => {
  262    262   
                    builder.float_value = Some(deser.read_float(member)?);
  263    263   
                }
  264    264   
                Some(5) => {
  265    265   
                    builder.integer_value = Some(deser.read_integer(member)?);
  266    266   
                }
  267    267   
                Some(6) => {
  268    268   
                    builder.long_value = Some(deser.read_long(member)?);
  269    269   
                }
  270    270   
                Some(7) => {
  271    271   
                    builder.short_value = Some(deser.read_short(member)?);
  272    272   
                }
  273    273   
                Some(8) => {
  274    274   
                    builder.string_value = Some(deser.read_string(member)?);
  275    275   
                }
  276    276   
                Some(9) => {
  277    277   
                    builder.blob_value = Some(deser.read_blob(member)?);
  278    278   
                }
  279    279   
                _ => {}
  280    280   
            }
  281    281   
            Ok(())
  282    282   
        })?;
  283    283   
        builder
  284    284   
            .build()
  285    285   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  286    286   
    }
  287    287   
}
         288  +
impl SimpleScalarPropertiesInput {
         289  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         290  +
    pub fn deserialize_with_response(
         291  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         292  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         293  +
        _status: u16,
         294  +
        _body: &[u8],
         295  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         296  +
        Self::deserialize(deserializer)
         297  +
    }
         298  +
}
  288    299   
impl SimpleScalarPropertiesInput {
  289    300   
    /// Creates a new builder-style object to manufacture [`SimpleScalarPropertiesInput`](crate::operation::simple_scalar_properties::SimpleScalarPropertiesInput).
  290    301   
    pub fn builder() -> crate::operation::simple_scalar_properties::builders::SimpleScalarPropertiesInputBuilder {
  291    302   
        crate::operation::simple_scalar_properties::builders::SimpleScalarPropertiesInputBuilder::default()
  292    303   
    }
  293    304   
}
  294    305   
  295    306   
/// A builder for [`SimpleScalarPropertiesInput`](crate::operation::simple_scalar_properties::SimpleScalarPropertiesInput).
  296    307   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  297    308   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/operation/simple_scalar_properties/_simple_scalar_properties_output.rs

@@ -51,51 +201,201 @@
   71     71   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   72     72   
    "SimpleScalarPropertiesOutput",
   73     73   
);
   74     74   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_TRUE_BOOLEAN_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   75     75   
    ::aws_smithy_schema::ShapeId::from_static(
   76     76   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$trueBooleanValue",
   77     77   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   78     78   
        "SimpleScalarPropertiesOutput",
   79     79   
    ),
   80     80   
    ::aws_smithy_schema::ShapeType::Boolean,
   81         -
    "true_boolean_value",
          81  +
    "trueBooleanValue",
   82     82   
    0,
   83     83   
);
   84     84   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_FALSE_BOOLEAN_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   85     85   
    ::aws_smithy_schema::ShapeId::from_static(
   86     86   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$falseBooleanValue",
   87     87   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   88     88   
        "SimpleScalarPropertiesOutput",
   89     89   
    ),
   90     90   
    ::aws_smithy_schema::ShapeType::Boolean,
   91         -
    "false_boolean_value",
          91  +
    "falseBooleanValue",
   92     92   
    1,
   93     93   
);
   94     94   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_BYTE_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$byteValue",
   97     97   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   98     98   
        "SimpleScalarPropertiesOutput",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::Byte,
  101         -
    "byte_value",
         101  +
    "byteValue",
  102    102   
    2,
  103    103   
);
  104    104   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_DOUBLE_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$doubleValue",
  107    107   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  108    108   
        "SimpleScalarPropertiesOutput",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::Double,
  111         -
    "double_value",
         111  +
    "doubleValue",
  112    112   
    3,
  113    113   
);
  114    114   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_FLOAT_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  115    115   
    ::aws_smithy_schema::ShapeId::from_static(
  116    116   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$floatValue",
  117    117   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  118    118   
        "SimpleScalarPropertiesOutput",
  119    119   
    ),
  120    120   
    ::aws_smithy_schema::ShapeType::Float,
  121         -
    "float_value",
         121  +
    "floatValue",
  122    122   
    4,
  123    123   
);
  124    124   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_INTEGER_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  125    125   
    ::aws_smithy_schema::ShapeId::from_static(
  126    126   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$integerValue",
  127    127   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  128    128   
        "SimpleScalarPropertiesOutput",
  129    129   
    ),
  130    130   
    ::aws_smithy_schema::ShapeType::Integer,
  131         -
    "integer_value",
         131  +
    "integerValue",
  132    132   
    5,
  133    133   
);
  134    134   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_LONG_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$longValue",
  137    137   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  138    138   
        "SimpleScalarPropertiesOutput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::Long,
  141         -
    "long_value",
         141  +
    "longValue",
  142    142   
    6,
  143    143   
);
  144    144   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_SHORT_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$shortValue",
  147    147   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  148    148   
        "SimpleScalarPropertiesOutput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::Short,
  151         -
    "short_value",
         151  +
    "shortValue",
  152    152   
    7,
  153    153   
);
  154    154   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_STRING_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  155    155   
    ::aws_smithy_schema::ShapeId::from_static(
  156    156   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$stringValue",
  157    157   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  158    158   
        "SimpleScalarPropertiesOutput",
  159    159   
    ),
  160    160   
    ::aws_smithy_schema::ShapeType::String,
  161         -
    "string_value",
         161  +
    "stringValue",
  162    162   
    8,
  163    163   
);
  164    164   
static SIMPLESCALARPROPERTIESOUTPUT_MEMBER_BLOB_VALUE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  165    165   
    ::aws_smithy_schema::ShapeId::from_static(
  166    166   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SimpleScalarPropertiesOutput$blobValue",
  167    167   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  168    168   
        "SimpleScalarPropertiesOutput",
  169    169   
    ),
  170    170   
    ::aws_smithy_schema::ShapeType::Blob,
  171         -
    "blob_value",
         171  +
    "blobValue",
  172    172   
    9,
  173    173   
);
  174    174   
static SIMPLESCALARPROPERTIESOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  175    175   
    SIMPLESCALARPROPERTIESOUTPUT_SCHEMA_ID,
  176    176   
    ::aws_smithy_schema::ShapeType::Structure,
  177    177   
    &[
  178    178   
        &SIMPLESCALARPROPERTIESOUTPUT_MEMBER_TRUE_BOOLEAN_VALUE,
  179    179   
        &SIMPLESCALARPROPERTIESOUTPUT_MEMBER_FALSE_BOOLEAN_VALUE,
  180    180   
        &SIMPLESCALARPROPERTIESOUTPUT_MEMBER_BYTE_VALUE,
  181    181   
        &SIMPLESCALARPROPERTIESOUTPUT_MEMBER_DOUBLE_VALUE,
@@ -205,205 +315,326 @@
  225    225   
            ser.write_string(&SIMPLESCALARPROPERTIESOUTPUT_MEMBER_STRING_VALUE, val)?;
  226    226   
        }
  227    227   
        if let Some(ref val) = self.blob_value {
  228    228   
            ser.write_blob(&SIMPLESCALARPROPERTIESOUTPUT_MEMBER_BLOB_VALUE, val)?;
  229    229   
        }
  230    230   
        Ok(())
  231    231   
    }
  232    232   
}
  233    233   
impl SimpleScalarPropertiesOutput {
  234    234   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  235         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  236         -
        deserializer: &mut D,
         235  +
    pub fn deserialize(
         236  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  237    237   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  238    238   
        #[allow(unused_variables, unused_mut)]
  239    239   
        let mut builder = Self::builder();
  240    240   
        #[allow(
  241    241   
            unused_variables,
  242    242   
            unreachable_code,
  243    243   
            clippy::single_match,
  244    244   
            clippy::match_single_binding,
  245    245   
            clippy::diverging_sub_expression
  246    246   
        )]
  247         -
        deserializer.read_struct(&SIMPLESCALARPROPERTIESOUTPUT_SCHEMA, (), |_, member, deser| {
         247  +
        deserializer.read_struct(&SIMPLESCALARPROPERTIESOUTPUT_SCHEMA, &mut |member, deser| {
  248    248   
            match member.member_index() {
  249    249   
                Some(0) => {
  250    250   
                    builder.true_boolean_value = Some(deser.read_boolean(member)?);
  251    251   
                }
  252    252   
                Some(1) => {
  253    253   
                    builder.false_boolean_value = Some(deser.read_boolean(member)?);
  254    254   
                }
  255    255   
                Some(2) => {
  256    256   
                    builder.byte_value = Some(deser.read_byte(member)?);
  257    257   
                }
  258    258   
                Some(3) => {
  259    259   
                    builder.double_value = Some(deser.read_double(member)?);
  260    260   
                }
  261    261   
                Some(4) => {
  262    262   
                    builder.float_value = Some(deser.read_float(member)?);
  263    263   
                }
  264    264   
                Some(5) => {
  265    265   
                    builder.integer_value = Some(deser.read_integer(member)?);
  266    266   
                }
  267    267   
                Some(6) => {
  268    268   
                    builder.long_value = Some(deser.read_long(member)?);
  269    269   
                }
  270    270   
                Some(7) => {
  271    271   
                    builder.short_value = Some(deser.read_short(member)?);
  272    272   
                }
  273    273   
                Some(8) => {
  274    274   
                    builder.string_value = Some(deser.read_string(member)?);
  275    275   
                }
  276    276   
                Some(9) => {
  277    277   
                    builder.blob_value = Some(deser.read_blob(member)?);
  278    278   
                }
  279    279   
                _ => {}
  280    280   
            }
  281    281   
            Ok(())
  282    282   
        })?;
  283    283   
        Ok(builder.build())
  284    284   
    }
  285    285   
}
         286  +
impl SimpleScalarPropertiesOutput {
         287  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         288  +
    pub fn deserialize_with_response(
         289  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         290  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         291  +
        _status: u16,
         292  +
        _body: &[u8],
         293  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         294  +
        Self::deserialize(deserializer)
         295  +
    }
         296  +
}
  286    297   
impl SimpleScalarPropertiesOutput {
  287    298   
    /// Creates a new builder-style object to manufacture [`SimpleScalarPropertiesOutput`](crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput).
  288    299   
    pub fn builder() -> crate::operation::simple_scalar_properties::builders::SimpleScalarPropertiesOutputBuilder {
  289    300   
        crate::operation::simple_scalar_properties::builders::SimpleScalarPropertiesOutputBuilder::default()
  290    301   
    }
  291    302   
}
  292    303   
  293    304   
/// A builder for [`SimpleScalarPropertiesOutput`](crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput).
  294    305   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  295    306   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/operation/sparse_nulls_operation.rs

@@ -1,1 +40,44 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
/// Orchestration and serialization glue logic for `SparseNullsOperation`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct SparseNullsOperation;
    6      6   
impl SparseNullsOperation {
    7      7   
    /// Creates a new `SparseNullsOperation`
    8      8   
    pub fn new() -> Self {
    9      9   
        Self
   10     10   
    }
          11  +
    /// The schema for this operation's input shape.
          12  +
    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::sparse_nulls_operation::SparseNullsOperationInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::sparse_nulls_operation::SparseNullsOperationOutput::SCHEMA;
   11     15   
    pub(crate) async fn orchestrate(
   12     16   
        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
   13     17   
        input: crate::operation::sparse_nulls_operation::SparseNullsOperationInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::sparse_nulls_operation::SparseNullsOperationOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::sparse_nulls_operation::SparseNullsOperationError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -110,114 +172,177 @@
  130    134   
                crate::operation::sparse_nulls_operation::SparseNullsOperationError,
  131    135   
            >::new());
  132    136   
  133    137   
        ::std::borrow::Cow::Owned(rcb)
  134    138   
    }
  135    139   
}
  136    140   
  137    141   
#[derive(Debug)]
  138    142   
struct SparseNullsOperationResponseDeserializer;
  139    143   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for SparseNullsOperationResponseDeserializer {
  140         -
    fn deserialize_nonstreaming(
         144  +
    fn deserialize_nonstreaming_with_config(
  141    145   
        &self,
  142    146   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         147  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  143    148   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  144    149   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  145    150   
        let headers = response.headers();
  146    151   
        let body = response.body().bytes().expect("body loaded");
  147    152   
        #[allow(unused_mut)]
  148    153   
        let mut force_error = false;
  149    154   
  150    155   
        let parse_result = if !success && status != 200 || force_error {
  151    156   
            crate::protocol_serde::shape_sparse_nulls_operation::de_sparse_nulls_operation_http_error(status, headers, body)
  152    157   
        } else {
@@ -345,350 +457,470 @@
  365    370   
            .expect("the config must have a deserializer");
  366    371   
  367    372   
        let parsed = de.deserialize_streaming(&mut http_response);
  368    373   
        let parsed = parsed.unwrap_or_else(|| {
  369    374   
            let http_response = http_response.map(|body| {
  370    375   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  371    376   
                    body.bytes().unwrap(),
  372    377   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  373    378   
                )))
  374    379   
            });
  375         -
            de.deserialize_nonstreaming(&http_response)
         380  +
            // Build a config bag with the protocol for schema-based deserialization
         381  +
            #[allow(unused_mut)]
         382  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         383  +
         384  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  376    385   
        });
  377    386   
        let parsed = parsed
  378    387   
            .expect("should be successful response")
  379    388   
            .downcast::<crate::operation::sparse_nulls_operation::SparseNullsOperationOutput>()
  380    389   
            .unwrap();
  381    390   
        ::pretty_assertions::assert_eq!(
  382    391   
            parsed.sparse_string_list,
  383    392   
            expected_output.sparse_string_list,
  384    393   
            "Unexpected value for `sparse_string_list`"
  385    394   
        );
  386    395   
        ::pretty_assertions::assert_eq!(
  387    396   
            parsed.sparse_string_map,
  388    397   
            expected_output.sparse_string_map,
  389    398   
            "Unexpected value for `sparse_string_map`"
  390    399   
        );
  391    400   
    }
  392    401   
  393    402   
    /// Deserializes null values in lists
  394    403   
    /// Test ID: RpcV2CborSparseListsDeserializeNull
  395    404   
    #[::tokio::test]
  396    405   
    #[::tracing_test::traced_test]
  397    406   
    async fn rpc_v2_cbor_sparse_lists_deserialize_null_response() {
  398    407   
        let expected_output = crate::operation::sparse_nulls_operation::SparseNullsOperationOutput::builder()
  399    408   
            .set_sparse_string_list(::std::option::Option::Some(vec![::std::option::Option::None]))
  400    409   
            .build();
  401    410   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  402    411   
            ::http_1x::response::Builder::new()
  403    412   
                .header("Content-Type", "application/cbor")
  404    413   
                .header("smithy-protocol", "rpc-v2-cbor")
  405    414   
                .status(200)
  406    415   
                .body(::aws_smithy_types::body::SdkBody::from("v3BzcGFyc2VTdHJpbmdMaXN0n/b//w=="))
  407    416   
                .unwrap(),
  408    417   
        )
  409    418   
        .unwrap();
  410    419   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  411    420   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  412    421   
  413    422   
        let op = crate::operation::sparse_nulls_operation::SparseNullsOperation::new();
  414    423   
        let config = op.config().expect("the operation has config");
  415    424   
        let de = config
  416    425   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  417    426   
            .expect("the config must have a deserializer");
  418    427   
  419    428   
        let parsed = de.deserialize_streaming(&mut http_response);
  420    429   
        let parsed = parsed.unwrap_or_else(|| {
  421    430   
            let http_response = http_response.map(|body| {
  422    431   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  423    432   
                    body.bytes().unwrap(),
  424    433   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  425    434   
                )))
  426    435   
            });
  427         -
            de.deserialize_nonstreaming(&http_response)
         436  +
            // Build a config bag with the protocol for schema-based deserialization
         437  +
            #[allow(unused_mut)]
         438  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         439  +
         440  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  428    441   
        });
  429    442   
        let parsed = parsed
  430    443   
            .expect("should be successful response")
  431    444   
            .downcast::<crate::operation::sparse_nulls_operation::SparseNullsOperationOutput>()
  432    445   
            .unwrap();
  433    446   
        ::pretty_assertions::assert_eq!(
  434    447   
            parsed.sparse_string_list,
  435    448   
            expected_output.sparse_string_list,
  436    449   
            "Unexpected value for `sparse_string_list`"
  437    450   
        );

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/operation/sparse_nulls_operation/_sparse_nulls_operation_input.rs

@@ -7,7 +77,77 @@
   27     27   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   28     28   
    "SparseNullsOperationInput",
   29     29   
);
   30     30   
static SPARSENULLSOPERATIONINPUT_MEMBER_SPARSE_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   31     31   
    ::aws_smithy_schema::ShapeId::from_static(
   32     32   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SparseNullsOperationInput$sparseStringList",
   33     33   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   34     34   
        "SparseNullsOperationInput",
   35     35   
    ),
   36     36   
    ::aws_smithy_schema::ShapeType::List,
   37         -
    "sparse_string_list",
          37  +
    "sparseStringList",
   38     38   
    0,
   39     39   
);
   40     40   
static SPARSENULLSOPERATIONINPUT_MEMBER_SPARSE_STRING_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   41     41   
    ::aws_smithy_schema::ShapeId::from_static(
   42     42   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SparseNullsOperationInput$sparseStringMap",
   43     43   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   44     44   
        "SparseNullsOperationInput",
   45     45   
    ),
   46     46   
    ::aws_smithy_schema::ShapeType::Map,
   47         -
    "sparse_string_map",
          47  +
    "sparseStringMap",
   48     48   
    1,
   49     49   
);
   50     50   
static SPARSENULLSOPERATIONINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   51     51   
    SPARSENULLSOPERATIONINPUT_SCHEMA_ID,
   52     52   
    ::aws_smithy_schema::ShapeType::Structure,
   53     53   
    &[
   54     54   
        &SPARSENULLSOPERATIONINPUT_MEMBER_SPARSE_STRING_LIST,
   55     55   
        &SPARSENULLSOPERATIONINPUT_MEMBER_SPARSE_STRING_MAP,
   56     56   
    ],
   57     57   
);
@@ -80,80 +201,206 @@
  100    100   
                    }
  101    101   
                    Ok(())
  102    102   
                },
  103    103   
            )?;
  104    104   
        }
  105    105   
        Ok(())
  106    106   
    }
  107    107   
}
  108    108   
impl SparseNullsOperationInput {
  109    109   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  110         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  111         -
        deserializer: &mut D,
         110  +
    pub fn deserialize(
         111  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  112    112   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  113    113   
        #[allow(unused_variables, unused_mut)]
  114    114   
        let mut builder = Self::builder();
  115    115   
        #[allow(
  116    116   
            unused_variables,
  117    117   
            unreachable_code,
  118    118   
            clippy::single_match,
  119    119   
            clippy::match_single_binding,
  120    120   
            clippy::diverging_sub_expression
  121    121   
        )]
  122         -
        deserializer.read_struct(&SPARSENULLSOPERATIONINPUT_SCHEMA, (), |_, member, deser| {
         122  +
        deserializer.read_struct(&SPARSENULLSOPERATIONINPUT_SCHEMA, &mut |member, deser| {
  123    123   
            match member.member_index() {
  124    124   
                Some(0) => {
  125    125   
                    builder.sparse_string_list = Some({
  126         -
                        let container = if let Some(cap) = deser.container_size() {
  127         -
                            Vec::with_capacity(cap)
  128         -
                        } else {
  129         -
                            Vec::new()
  130         -
                        };
  131         -
                        deser.read_list(member, container, |mut list, deser| {
  132         -
                            list.push(if deser.is_null() {
  133         -
                                deser.read_string(member).ok();
         126  +
                        let mut container = Vec::new();
         127  +
                        deser.read_list(member, &mut |deser| {
         128  +
                            container.push(if deser.is_null() {
         129  +
                                deser.read_null()?;
  134    130   
                                None
  135    131   
                            } else {
  136    132   
                                Some(deser.read_string(member)?)
  137    133   
                            });
  138         -
                            Ok(list)
  139         -
                        })?
         134  +
                            Ok(())
         135  +
                        })?;
         136  +
                        container
  140    137   
                    });
  141    138   
                }
  142    139   
                Some(1) => {
  143    140   
                    builder.sparse_string_map = Some({
  144         -
                        let container = if let Some(cap) = deser.container_size() {
  145         -
                            std::collections::HashMap::with_capacity(cap)
  146         -
                        } else {
  147         -
                            std::collections::HashMap::new()
  148         -
                        };
  149         -
                        deser.read_map(member, container, |mut map, key, deser| {
  150         -
                            map.insert(
         141  +
                        let mut container = std::collections::HashMap::new();
         142  +
                        deser.read_map(member, &mut |key, deser| {
         143  +
                            container.insert(
  151    144   
                                key,
  152    145   
                                if deser.is_null() {
  153         -
                                    deser.read_string(member).ok();
         146  +
                                    deser.read_null()?;
  154    147   
                                    None
  155    148   
                                } else {
  156    149   
                                    Some(deser.read_string(member)?)
  157    150   
                                },
  158    151   
                            );
  159         -
                            Ok(map)
  160         -
                        })?
         152  +
                            Ok(())
         153  +
                        })?;
         154  +
                        container
  161    155   
                    });
  162    156   
                }
  163    157   
                _ => {}
  164    158   
            }
  165    159   
            Ok(())
  166    160   
        })?;
  167    161   
        builder
  168    162   
            .build()
  169    163   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  170    164   
    }
  171    165   
}
         166  +
impl SparseNullsOperationInput {
         167  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         168  +
    pub fn deserialize_with_response(
         169  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         170  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         171  +
        _status: u16,
         172  +
        _body: &[u8],
         173  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         174  +
        Self::deserialize(deserializer)
         175  +
    }
         176  +
}
  172    177   
impl SparseNullsOperationInput {
  173    178   
    /// Creates a new builder-style object to manufacture [`SparseNullsOperationInput`](crate::operation::sparse_nulls_operation::SparseNullsOperationInput).
  174    179   
    pub fn builder() -> crate::operation::sparse_nulls_operation::builders::SparseNullsOperationInputBuilder {
  175    180   
        crate::operation::sparse_nulls_operation::builders::SparseNullsOperationInputBuilder::default()
  176    181   
    }
  177    182   
}
  178    183   
  179    184   
/// A builder for [`SparseNullsOperationInput`](crate::operation::sparse_nulls_operation::SparseNullsOperationInput).
  180    185   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  181    186   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/operation/sparse_nulls_operation/_sparse_nulls_operation_output.rs

@@ -7,7 +77,77 @@
   27     27   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   28     28   
    "SparseNullsOperationOutput",
   29     29   
);
   30     30   
static SPARSENULLSOPERATIONOUTPUT_MEMBER_SPARSE_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   31     31   
    ::aws_smithy_schema::ShapeId::from_static(
   32     32   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SparseNullsOperationOutput$sparseStringList",
   33     33   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   34     34   
        "SparseNullsOperationOutput",
   35     35   
    ),
   36     36   
    ::aws_smithy_schema::ShapeType::List,
   37         -
    "sparse_string_list",
          37  +
    "sparseStringList",
   38     38   
    0,
   39     39   
);
   40     40   
static SPARSENULLSOPERATIONOUTPUT_MEMBER_SPARSE_STRING_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   41     41   
    ::aws_smithy_schema::ShapeId::from_static(
   42     42   
        "smithy.protocoltests.rpcv2Cbor.synthetic#SparseNullsOperationOutput$sparseStringMap",
   43     43   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   44     44   
        "SparseNullsOperationOutput",
   45     45   
    ),
   46     46   
    ::aws_smithy_schema::ShapeType::Map,
   47         -
    "sparse_string_map",
          47  +
    "sparseStringMap",
   48     48   
    1,
   49     49   
);
   50     50   
static SPARSENULLSOPERATIONOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   51     51   
    SPARSENULLSOPERATIONOUTPUT_SCHEMA_ID,
   52     52   
    ::aws_smithy_schema::ShapeType::Structure,
   53     53   
    &[
   54     54   
        &SPARSENULLSOPERATIONOUTPUT_MEMBER_SPARSE_STRING_LIST,
   55     55   
        &SPARSENULLSOPERATIONOUTPUT_MEMBER_SPARSE_STRING_MAP,
   56     56   
    ],
   57     57   
);
@@ -80,80 +199,204 @@
  100    100   
                    }
  101    101   
                    Ok(())
  102    102   
                },
  103    103   
            )?;
  104    104   
        }
  105    105   
        Ok(())
  106    106   
    }
  107    107   
}
  108    108   
impl SparseNullsOperationOutput {
  109    109   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  110         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  111         -
        deserializer: &mut D,
         110  +
    pub fn deserialize(
         111  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  112    112   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  113    113   
        #[allow(unused_variables, unused_mut)]
  114    114   
        let mut builder = Self::builder();
  115    115   
        #[allow(
  116    116   
            unused_variables,
  117    117   
            unreachable_code,
  118    118   
            clippy::single_match,
  119    119   
            clippy::match_single_binding,
  120    120   
            clippy::diverging_sub_expression
  121    121   
        )]
  122         -
        deserializer.read_struct(&SPARSENULLSOPERATIONOUTPUT_SCHEMA, (), |_, member, deser| {
         122  +
        deserializer.read_struct(&SPARSENULLSOPERATIONOUTPUT_SCHEMA, &mut |member, deser| {
  123    123   
            match member.member_index() {
  124    124   
                Some(0) => {
  125    125   
                    builder.sparse_string_list = Some({
  126         -
                        let container = if let Some(cap) = deser.container_size() {
  127         -
                            Vec::with_capacity(cap)
  128         -
                        } else {
  129         -
                            Vec::new()
  130         -
                        };
  131         -
                        deser.read_list(member, container, |mut list, deser| {
  132         -
                            list.push(if deser.is_null() {
  133         -
                                deser.read_string(member).ok();
         126  +
                        let mut container = Vec::new();
         127  +
                        deser.read_list(member, &mut |deser| {
         128  +
                            container.push(if deser.is_null() {
         129  +
                                deser.read_null()?;
  134    130   
                                None
  135    131   
                            } else {
  136    132   
                                Some(deser.read_string(member)?)
  137    133   
                            });
  138         -
                            Ok(list)
  139         -
                        })?
         134  +
                            Ok(())
         135  +
                        })?;
         136  +
                        container
  140    137   
                    });
  141    138   
                }
  142    139   
                Some(1) => {
  143    140   
                    builder.sparse_string_map = Some({
  144         -
                        let container = if let Some(cap) = deser.container_size() {
  145         -
                            std::collections::HashMap::with_capacity(cap)
  146         -
                        } else {
  147         -
                            std::collections::HashMap::new()
  148         -
                        };
  149         -
                        deser.read_map(member, container, |mut map, key, deser| {
  150         -
                            map.insert(
         141  +
                        let mut container = std::collections::HashMap::new();
         142  +
                        deser.read_map(member, &mut |key, deser| {
         143  +
                            container.insert(
  151    144   
                                key,
  152    145   
                                if deser.is_null() {
  153         -
                                    deser.read_string(member).ok();
         146  +
                                    deser.read_null()?;
  154    147   
                                    None
  155    148   
                                } else {
  156    149   
                                    Some(deser.read_string(member)?)
  157    150   
                                },
  158    151   
                            );
  159         -
                            Ok(map)
  160         -
                        })?
         152  +
                            Ok(())
         153  +
                        })?;
         154  +
                        container
  161    155   
                    });
  162    156   
                }
  163    157   
                _ => {}
  164    158   
            }
  165    159   
            Ok(())
  166    160   
        })?;
  167    161   
        Ok(builder.build())
  168    162   
    }
  169    163   
}
         164  +
impl SparseNullsOperationOutput {
         165  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         166  +
    pub fn deserialize_with_response(
         167  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         168  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         169  +
        _status: u16,
         170  +
        _body: &[u8],
         171  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         172  +
        Self::deserialize(deserializer)
         173  +
    }
         174  +
}
  170    175   
impl SparseNullsOperationOutput {
  171    176   
    /// Creates a new builder-style object to manufacture [`SparseNullsOperationOutput`](crate::operation::sparse_nulls_operation::SparseNullsOperationOutput).
  172    177   
    pub fn builder() -> crate::operation::sparse_nulls_operation::builders::SparseNullsOperationOutputBuilder {
  173    178   
        crate::operation::sparse_nulls_operation::builders::SparseNullsOperationOutputBuilder::default()
  174    179   
    }
  175    180   
}
  176    181   
  177    182   
/// A builder for [`SparseNullsOperationOutput`](crate::operation::sparse_nulls_operation::SparseNullsOperationOutput).
  178    183   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  179    184   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_client_optional_defaults.rs

@@ -23,23 +106,117 @@
   43     43   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   44     44   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   45     45   
        if let Some(ref val) = self.member {
   46     46   
            ser.write_integer(&CLIENTOPTIONALDEFAULTS_MEMBER_MEMBER, *val)?;
   47     47   
        }
   48     48   
        Ok(())
   49     49   
    }
   50     50   
}
   51     51   
impl ClientOptionalDefaults {
   52     52   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   53         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   54         -
        deserializer: &mut D,
          53  +
    pub fn deserialize(
          54  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   55     55   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   56     56   
        #[allow(unused_variables, unused_mut)]
   57     57   
        let mut builder = Self::builder();
   58     58   
        #[allow(
   59     59   
            unused_variables,
   60     60   
            unreachable_code,
   61     61   
            clippy::single_match,
   62     62   
            clippy::match_single_binding,
   63     63   
            clippy::diverging_sub_expression
   64     64   
        )]
   65         -
        deserializer.read_struct(&CLIENTOPTIONALDEFAULTS_SCHEMA, (), |_, member, deser| {
          65  +
        deserializer.read_struct(&CLIENTOPTIONALDEFAULTS_SCHEMA, &mut |member, deser| {
   66     66   
            match member.member_index() {
   67     67   
                Some(0) => {
   68     68   
                    builder.member = Some(deser.read_integer(member)?);
   69     69   
                }
   70     70   
                _ => {}
   71     71   
            }
   72     72   
            Ok(())
   73     73   
        })?;
   74     74   
        Ok(builder.build())
   75     75   
    }
   76     76   
}
          77  +
impl ClientOptionalDefaults {
          78  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          79  +
    pub fn deserialize_with_response(
          80  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          81  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          82  +
        _status: u16,
          83  +
        _body: &[u8],
          84  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          85  +
        Self::deserialize(deserializer)
          86  +
    }
          87  +
}
   77     88   
impl ClientOptionalDefaults {
   78     89   
    /// Creates a new builder-style object to manufacture [`ClientOptionalDefaults`](crate::types::ClientOptionalDefaults).
   79     90   
    pub fn builder() -> crate::types::builders::ClientOptionalDefaultsBuilder {
   80     91   
        crate::types::builders::ClientOptionalDefaultsBuilder::default()
   81     92   
    }
   82     93   
}
   83     94   
   84     95   
/// A builder for [`ClientOptionalDefaults`](crate::types::ClientOptionalDefaults).
   85     96   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   86     97   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_complex_nested_error_data.rs

@@ -1,1 +106,117 @@
   17     17   
    "smithy.protocoltests.rpcv2Cbor",
   18     18   
    "ComplexNestedErrorData",
   19     19   
);
   20     20   
static COMPLEXNESTEDERRORDATA_MEMBER_FOO: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   21     21   
    ::aws_smithy_schema::ShapeId::from_static(
   22     22   
        "smithy.protocoltests.rpcv2Cbor#ComplexNestedErrorData$Foo",
   23     23   
        "smithy.protocoltests.rpcv2Cbor",
   24     24   
        "ComplexNestedErrorData",
   25     25   
    ),
   26     26   
    ::aws_smithy_schema::ShapeType::String,
   27         -
    "foo",
          27  +
    "Foo",
   28     28   
    0,
   29     29   
);
   30     30   
static COMPLEXNESTEDERRORDATA_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   31     31   
    COMPLEXNESTEDERRORDATA_SCHEMA_ID,
   32     32   
    ::aws_smithy_schema::ShapeType::Structure,
   33     33   
    &[&COMPLEXNESTEDERRORDATA_MEMBER_FOO],
   34     34   
);
   35     35   
impl ComplexNestedErrorData {
   36     36   
    /// The schema for this shape.
   37     37   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &COMPLEXNESTEDERRORDATA_SCHEMA;
   38     38   
}
   39     39   
impl ::aws_smithy_schema::serde::SerializableStruct for ComplexNestedErrorData {
   40     40   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   41     41   
    fn serialize_members(
   42     42   
        &self,
   43     43   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   44     44   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   45     45   
        if let Some(ref val) = self.foo {
   46     46   
            ser.write_string(&COMPLEXNESTEDERRORDATA_MEMBER_FOO, val)?;
   47     47   
        }
   48     48   
        Ok(())
   49     49   
    }
   50     50   
}
   51     51   
impl ComplexNestedErrorData {
   52     52   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   53         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   54         -
        deserializer: &mut D,
          53  +
    pub fn deserialize(
          54  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   55     55   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   56     56   
        #[allow(unused_variables, unused_mut)]
   57     57   
        let mut builder = Self::builder();
   58     58   
        #[allow(
   59     59   
            unused_variables,
   60     60   
            unreachable_code,
   61     61   
            clippy::single_match,
   62     62   
            clippy::match_single_binding,
   63     63   
            clippy::diverging_sub_expression
   64     64   
        )]
   65         -
        deserializer.read_struct(&COMPLEXNESTEDERRORDATA_SCHEMA, (), |_, member, deser| {
          65  +
        deserializer.read_struct(&COMPLEXNESTEDERRORDATA_SCHEMA, &mut |member, deser| {
   66     66   
            match member.member_index() {
   67     67   
                Some(0) => {
   68     68   
                    builder.foo = Some(deser.read_string(member)?);
   69     69   
                }
   70     70   
                _ => {}
   71     71   
            }
   72     72   
            Ok(())
   73     73   
        })?;
   74     74   
        Ok(builder.build())
   75     75   
    }
   76     76   
}
          77  +
impl ComplexNestedErrorData {
          78  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          79  +
    pub fn deserialize_with_response(
          80  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          81  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          82  +
        _status: u16,
          83  +
        _body: &[u8],
          84  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          85  +
        Self::deserialize(deserializer)
          86  +
    }
          87  +
}
   77     88   
impl ComplexNestedErrorData {
   78     89   
    /// Creates a new builder-style object to manufacture [`ComplexNestedErrorData`](crate::types::ComplexNestedErrorData).
   79     90   
    pub fn builder() -> crate::types::builders::ComplexNestedErrorDataBuilder {
   80     91   
        crate::types::builders::ComplexNestedErrorDataBuilder::default()
   81     92   
    }
   82     93   
}
   83     94   
   84     95   
/// A builder for [`ComplexNestedErrorData`](crate::types::ComplexNestedErrorData).
   85     96   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   86     97   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_defaults.rs

@@ -129,129 +409,409 @@
  149    149   
}
  150    150   
static DEFAULTS_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
  151    151   
    ::aws_smithy_schema::ShapeId::from_static("smithy.protocoltests.rpcv2Cbor#Defaults", "smithy.protocoltests.rpcv2Cbor", "Defaults");
  152    152   
static DEFAULTS_MEMBER_DEFAULT_STRING: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  153    153   
    ::aws_smithy_schema::ShapeId::from_static(
  154    154   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultString",
  155    155   
        "smithy.protocoltests.rpcv2Cbor",
  156    156   
        "Defaults",
  157    157   
    ),
  158    158   
    ::aws_smithy_schema::ShapeType::String,
  159         -
    "default_string",
         159  +
    "defaultString",
  160    160   
    0,
  161    161   
);
  162    162   
static DEFAULTS_MEMBER_DEFAULT_BOOLEAN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  163    163   
    ::aws_smithy_schema::ShapeId::from_static(
  164    164   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultBoolean",
  165    165   
        "smithy.protocoltests.rpcv2Cbor",
  166    166   
        "Defaults",
  167    167   
    ),
  168    168   
    ::aws_smithy_schema::ShapeType::Boolean,
  169         -
    "default_boolean",
         169  +
    "defaultBoolean",
  170    170   
    1,
  171    171   
);
  172    172   
static DEFAULTS_MEMBER_DEFAULT_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  173    173   
    ::aws_smithy_schema::ShapeId::from_static(
  174    174   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultList",
  175    175   
        "smithy.protocoltests.rpcv2Cbor",
  176    176   
        "Defaults",
  177    177   
    ),
  178    178   
    ::aws_smithy_schema::ShapeType::List,
  179         -
    "default_list",
         179  +
    "defaultList",
  180    180   
    2,
  181    181   
);
  182    182   
static DEFAULTS_MEMBER_DEFAULT_TIMESTAMP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  183    183   
    ::aws_smithy_schema::ShapeId::from_static(
  184    184   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultTimestamp",
  185    185   
        "smithy.protocoltests.rpcv2Cbor",
  186    186   
        "Defaults",
  187    187   
    ),
  188    188   
    ::aws_smithy_schema::ShapeType::Timestamp,
  189         -
    "default_timestamp",
         189  +
    "defaultTimestamp",
  190    190   
    3,
  191    191   
);
  192    192   
static DEFAULTS_MEMBER_DEFAULT_BLOB: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  193    193   
    ::aws_smithy_schema::ShapeId::from_static(
  194    194   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultBlob",
  195    195   
        "smithy.protocoltests.rpcv2Cbor",
  196    196   
        "Defaults",
  197    197   
    ),
  198    198   
    ::aws_smithy_schema::ShapeType::Blob,
  199         -
    "default_blob",
         199  +
    "defaultBlob",
  200    200   
    4,
  201    201   
);
  202    202   
static DEFAULTS_MEMBER_DEFAULT_BYTE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  203    203   
    ::aws_smithy_schema::ShapeId::from_static(
  204    204   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultByte",
  205    205   
        "smithy.protocoltests.rpcv2Cbor",
  206    206   
        "Defaults",
  207    207   
    ),
  208    208   
    ::aws_smithy_schema::ShapeType::Byte,
  209         -
    "default_byte",
         209  +
    "defaultByte",
  210    210   
    5,
  211    211   
);
  212    212   
static DEFAULTS_MEMBER_DEFAULT_SHORT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  213    213   
    ::aws_smithy_schema::ShapeId::from_static(
  214    214   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultShort",
  215    215   
        "smithy.protocoltests.rpcv2Cbor",
  216    216   
        "Defaults",
  217    217   
    ),
  218    218   
    ::aws_smithy_schema::ShapeType::Short,
  219         -
    "default_short",
         219  +
    "defaultShort",
  220    220   
    6,
  221    221   
);
  222    222   
static DEFAULTS_MEMBER_DEFAULT_INTEGER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  223    223   
    ::aws_smithy_schema::ShapeId::from_static(
  224    224   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultInteger",
  225    225   
        "smithy.protocoltests.rpcv2Cbor",
  226    226   
        "Defaults",
  227    227   
    ),
  228    228   
    ::aws_smithy_schema::ShapeType::Integer,
  229         -
    "default_integer",
         229  +
    "defaultInteger",
  230    230   
    7,
  231    231   
);
  232    232   
static DEFAULTS_MEMBER_DEFAULT_LONG: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  233    233   
    ::aws_smithy_schema::ShapeId::from_static(
  234    234   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultLong",
  235    235   
        "smithy.protocoltests.rpcv2Cbor",
  236    236   
        "Defaults",
  237    237   
    ),
  238    238   
    ::aws_smithy_schema::ShapeType::Long,
  239         -
    "default_long",
         239  +
    "defaultLong",
  240    240   
    8,
  241    241   
);
  242    242   
static DEFAULTS_MEMBER_DEFAULT_FLOAT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  243    243   
    ::aws_smithy_schema::ShapeId::from_static(
  244    244   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultFloat",
  245    245   
        "smithy.protocoltests.rpcv2Cbor",
  246    246   
        "Defaults",
  247    247   
    ),
  248    248   
    ::aws_smithy_schema::ShapeType::Float,
  249         -
    "default_float",
         249  +
    "defaultFloat",
  250    250   
    9,
  251    251   
);
  252    252   
static DEFAULTS_MEMBER_DEFAULT_DOUBLE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  253    253   
    ::aws_smithy_schema::ShapeId::from_static(
  254    254   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultDouble",
  255    255   
        "smithy.protocoltests.rpcv2Cbor",
  256    256   
        "Defaults",
  257    257   
    ),
  258    258   
    ::aws_smithy_schema::ShapeType::Double,
  259         -
    "default_double",
         259  +
    "defaultDouble",
  260    260   
    10,
  261    261   
);
  262    262   
static DEFAULTS_MEMBER_DEFAULT_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  263    263   
    ::aws_smithy_schema::ShapeId::from_static(
  264    264   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultMap",
  265    265   
        "smithy.protocoltests.rpcv2Cbor",
  266    266   
        "Defaults",
  267    267   
    ),
  268    268   
    ::aws_smithy_schema::ShapeType::Map,
  269         -
    "default_map",
         269  +
    "defaultMap",
  270    270   
    11,
  271    271   
);
  272    272   
static DEFAULTS_MEMBER_DEFAULT_ENUM: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  273    273   
    ::aws_smithy_schema::ShapeId::from_static(
  274    274   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultEnum",
  275    275   
        "smithy.protocoltests.rpcv2Cbor",
  276    276   
        "Defaults",
  277    277   
    ),
  278    278   
    ::aws_smithy_schema::ShapeType::String,
  279         -
    "default_enum",
         279  +
    "defaultEnum",
  280    280   
    12,
  281    281   
);
  282    282   
static DEFAULTS_MEMBER_DEFAULT_INT_ENUM: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  283    283   
    ::aws_smithy_schema::ShapeId::from_static(
  284    284   
        "smithy.protocoltests.rpcv2Cbor#Defaults$defaultIntEnum",
  285    285   
        "smithy.protocoltests.rpcv2Cbor",
  286    286   
        "Defaults",
  287    287   
    ),
  288    288   
    ::aws_smithy_schema::ShapeType::Integer,
  289         -
    "default_int_enum",
         289  +
    "defaultIntEnum",
  290    290   
    13,
  291    291   
);
  292    292   
static DEFAULTS_MEMBER_EMPTY_STRING: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  293    293   
    ::aws_smithy_schema::ShapeId::from_static(
  294    294   
        "smithy.protocoltests.rpcv2Cbor#Defaults$emptyString",
  295    295   
        "smithy.protocoltests.rpcv2Cbor",
  296    296   
        "Defaults",
  297    297   
    ),
  298    298   
    ::aws_smithy_schema::ShapeType::String,
  299         -
    "empty_string",
         299  +
    "emptyString",
  300    300   
    14,
  301    301   
);
  302    302   
static DEFAULTS_MEMBER_FALSE_BOOLEAN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  303    303   
    ::aws_smithy_schema::ShapeId::from_static(
  304    304   
        "smithy.protocoltests.rpcv2Cbor#Defaults$falseBoolean",
  305    305   
        "smithy.protocoltests.rpcv2Cbor",
  306    306   
        "Defaults",
  307    307   
    ),
  308    308   
    ::aws_smithy_schema::ShapeType::Boolean,
  309         -
    "false_boolean",
         309  +
    "falseBoolean",
  310    310   
    15,
  311    311   
);
  312    312   
static DEFAULTS_MEMBER_EMPTY_BLOB: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  313    313   
    ::aws_smithy_schema::ShapeId::from_static(
  314    314   
        "smithy.protocoltests.rpcv2Cbor#Defaults$emptyBlob",
  315    315   
        "smithy.protocoltests.rpcv2Cbor",
  316    316   
        "Defaults",
  317    317   
    ),
  318    318   
    ::aws_smithy_schema::ShapeType::Blob,
  319         -
    "empty_blob",
         319  +
    "emptyBlob",
  320    320   
    16,
  321    321   
);
  322    322   
static DEFAULTS_MEMBER_ZERO_BYTE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  323    323   
    ::aws_smithy_schema::ShapeId::from_static(
  324    324   
        "smithy.protocoltests.rpcv2Cbor#Defaults$zeroByte",
  325    325   
        "smithy.protocoltests.rpcv2Cbor",
  326    326   
        "Defaults",
  327    327   
    ),
  328    328   
    ::aws_smithy_schema::ShapeType::Byte,
  329         -
    "zero_byte",
         329  +
    "zeroByte",
  330    330   
    17,
  331    331   
);
  332    332   
static DEFAULTS_MEMBER_ZERO_SHORT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  333    333   
    ::aws_smithy_schema::ShapeId::from_static(
  334    334   
        "smithy.protocoltests.rpcv2Cbor#Defaults$zeroShort",
  335    335   
        "smithy.protocoltests.rpcv2Cbor",
  336    336   
        "Defaults",
  337    337   
    ),
  338    338   
    ::aws_smithy_schema::ShapeType::Short,
  339         -
    "zero_short",
         339  +
    "zeroShort",
  340    340   
    18,
  341    341   
);
  342    342   
static DEFAULTS_MEMBER_ZERO_INTEGER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  343    343   
    ::aws_smithy_schema::ShapeId::from_static(
  344    344   
        "smithy.protocoltests.rpcv2Cbor#Defaults$zeroInteger",
  345    345   
        "smithy.protocoltests.rpcv2Cbor",
  346    346   
        "Defaults",
  347    347   
    ),
  348    348   
    ::aws_smithy_schema::ShapeType::Integer,
  349         -
    "zero_integer",
         349  +
    "zeroInteger",
  350    350   
    19,
  351    351   
);
  352    352   
static DEFAULTS_MEMBER_ZERO_LONG: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  353    353   
    ::aws_smithy_schema::ShapeId::from_static(
  354    354   
        "smithy.protocoltests.rpcv2Cbor#Defaults$zeroLong",
  355    355   
        "smithy.protocoltests.rpcv2Cbor",
  356    356   
        "Defaults",
  357    357   
    ),
  358    358   
    ::aws_smithy_schema::ShapeType::Long,
  359         -
    "zero_long",
         359  +
    "zeroLong",
  360    360   
    20,
  361    361   
);
  362    362   
static DEFAULTS_MEMBER_ZERO_FLOAT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  363    363   
    ::aws_smithy_schema::ShapeId::from_static(
  364    364   
        "smithy.protocoltests.rpcv2Cbor#Defaults$zeroFloat",
  365    365   
        "smithy.protocoltests.rpcv2Cbor",
  366    366   
        "Defaults",
  367    367   
    ),
  368    368   
    ::aws_smithy_schema::ShapeType::Float,
  369         -
    "zero_float",
         369  +
    "zeroFloat",
  370    370   
    21,
  371    371   
);
  372    372   
static DEFAULTS_MEMBER_ZERO_DOUBLE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  373    373   
    ::aws_smithy_schema::ShapeId::from_static(
  374    374   
        "smithy.protocoltests.rpcv2Cbor#Defaults$zeroDouble",
  375    375   
        "smithy.protocoltests.rpcv2Cbor",
  376    376   
        "Defaults",
  377    377   
    ),
  378    378   
    ::aws_smithy_schema::ShapeType::Double,
  379         -
    "zero_double",
         379  +
    "zeroDouble",
  380    380   
    22,
  381    381   
);
  382    382   
static DEFAULTS_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  383    383   
    DEFAULTS_SCHEMA_ID,
  384    384   
    ::aws_smithy_schema::ShapeType::Structure,
  385    385   
    &[
  386    386   
        &DEFAULTS_MEMBER_DEFAULT_STRING,
  387    387   
        &DEFAULTS_MEMBER_DEFAULT_BOOLEAN,
  388    388   
        &DEFAULTS_MEMBER_DEFAULT_LIST,
  389    389   
        &DEFAULTS_MEMBER_DEFAULT_TIMESTAMP,
@@ -507,507 +676,667 @@
  527    527   
        }
  528    528   
        {
  529    529   
            let val = &self.zero_double;
  530    530   
            ser.write_double(&DEFAULTS_MEMBER_ZERO_DOUBLE, *val)?;
  531    531   
        }
  532    532   
        Ok(())
  533    533   
    }
  534    534   
}
  535    535   
impl Defaults {
  536    536   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  537         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  538         -
        deserializer: &mut D,
         537  +
    pub fn deserialize(
         538  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  539    539   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  540    540   
        #[allow(unused_variables, unused_mut)]
  541    541   
        let mut builder = Self::builder();
  542    542   
        #[allow(
  543    543   
            unused_variables,
  544    544   
            unreachable_code,
  545    545   
            clippy::single_match,
  546    546   
            clippy::match_single_binding,
  547    547   
            clippy::diverging_sub_expression
  548    548   
        )]
  549         -
        deserializer.read_struct(&DEFAULTS_SCHEMA, (), |_, member, deser| {
         549  +
        deserializer.read_struct(&DEFAULTS_SCHEMA, &mut |member, deser| {
  550    550   
            match member.member_index() {
  551    551   
                Some(0) => {
  552    552   
                    builder.default_string = Some(deser.read_string(member)?);
  553    553   
                }
  554    554   
                Some(1) => {
  555    555   
                    builder.default_boolean = Some(deser.read_boolean(member)?);
  556    556   
                }
  557    557   
                Some(2) => {
  558         -
                    builder.default_list = Some({
  559         -
                        let container = if let Some(cap) = deser.container_size() {
  560         -
                            Vec::with_capacity(cap)
  561         -
                        } else {
  562         -
                            Vec::new()
  563         -
                        };
  564         -
                        deser.read_list(member, container, |mut list, deser| {
  565         -
                            list.push(deser.read_string(member)?);
  566         -
                            Ok(list)
  567         -
                        })?
  568         -
                    });
         558  +
                    builder.default_list = Some(deser.read_string_list(member)?);
  569    559   
                }
  570    560   
                Some(3) => {
  571    561   
                    builder.default_timestamp = Some(deser.read_timestamp(member)?);
  572    562   
                }
  573    563   
                Some(4) => {
  574    564   
                    builder.default_blob = Some(deser.read_blob(member)?);
  575    565   
                }
  576    566   
                Some(5) => {
  577    567   
                    builder.default_byte = Some(deser.read_byte(member)?);
  578    568   
                }
  579    569   
                Some(6) => {
  580    570   
                    builder.default_short = Some(deser.read_short(member)?);
  581    571   
                }
  582    572   
                Some(7) => {
  583    573   
                    builder.default_integer = Some(deser.read_integer(member)?);
  584    574   
                }
  585    575   
                Some(8) => {
  586    576   
                    builder.default_long = Some(deser.read_long(member)?);
  587    577   
                }
  588    578   
                Some(9) => {
  589    579   
                    builder.default_float = Some(deser.read_float(member)?);
  590    580   
                }
  591    581   
                Some(10) => {
  592    582   
                    builder.default_double = Some(deser.read_double(member)?);
  593    583   
                }
  594    584   
                Some(11) => {
  595         -
                    builder.default_map = Some({
  596         -
                        let container = if let Some(cap) = deser.container_size() {
  597         -
                            std::collections::HashMap::with_capacity(cap)
  598         -
                        } else {
  599         -
                            std::collections::HashMap::new()
  600         -
                        };
  601         -
                        deser.read_map(member, container, |mut map, key, deser| {
  602         -
                            map.insert(key, deser.read_string(member)?);
  603         -
                            Ok(map)
  604         -
                        })?
  605         -
                    });
         585  +
                    builder.default_map = Some(deser.read_string_string_map(member)?);
  606    586   
                }
  607    587   
                Some(12) => {
  608    588   
                    builder.default_enum = Some(crate::types::TestEnum::from(deser.read_string(member)?.as_str()));
  609    589   
                }
  610    590   
                Some(13) => {
  611    591   
                    builder.default_int_enum = Some(deser.read_integer(member)?);
  612    592   
                }
  613    593   
                Some(14) => {
  614    594   
                    builder.empty_string = Some(deser.read_string(member)?);
  615    595   
                }
  616    596   
                Some(15) => {
  617    597   
                    builder.false_boolean = Some(deser.read_boolean(member)?);
  618    598   
                }
  619    599   
                Some(16) => {
  620    600   
                    builder.empty_blob = Some(deser.read_blob(member)?);
  621    601   
                }
  622    602   
                Some(17) => {
  623    603   
                    builder.zero_byte = Some(deser.read_byte(member)?);
  624    604   
                }
  625    605   
                Some(18) => {
  626    606   
                    builder.zero_short = Some(deser.read_short(member)?);
  627    607   
                }
  628    608   
                Some(19) => {
  629    609   
                    builder.zero_integer = Some(deser.read_integer(member)?);
  630    610   
                }
  631    611   
                Some(20) => {
  632    612   
                    builder.zero_long = Some(deser.read_long(member)?);
  633    613   
                }
  634    614   
                Some(21) => {
  635    615   
                    builder.zero_float = Some(deser.read_float(member)?);
  636    616   
                }
  637    617   
                Some(22) => {
  638    618   
                    builder.zero_double = Some(deser.read_double(member)?);
  639    619   
                }
  640    620   
                _ => {}
  641    621   
            }
  642    622   
            Ok(())
  643    623   
        })?;
  644    624   
        Ok(builder.build())
  645    625   
    }
  646    626   
}
         627  +
impl Defaults {
         628  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         629  +
    pub fn deserialize_with_response(
         630  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         631  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         632  +
        _status: u16,
         633  +
        _body: &[u8],
         634  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         635  +
        Self::deserialize(deserializer)
         636  +
    }
         637  +
}
  647    638   
impl Defaults {
  648    639   
    /// Creates a new builder-style object to manufacture [`Defaults`](crate::types::Defaults).
  649    640   
    pub fn builder() -> crate::types::builders::DefaultsBuilder {
  650    641   
        crate::types::builders::DefaultsBuilder::default()
  651    642   
    }
  652    643   
}
  653    644   
  654    645   
/// A builder for [`Defaults`](crate::types::Defaults).
  655    646   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  656    647   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_greeting_struct.rs

@@ -23,23 +106,117 @@
   43     43   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   44     44   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   45     45   
        if let Some(ref val) = self.hi {
   46     46   
            ser.write_string(&GREETINGSTRUCT_MEMBER_HI, val)?;
   47     47   
        }
   48     48   
        Ok(())
   49     49   
    }
   50     50   
}
   51     51   
impl GreetingStruct {
   52     52   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   53         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   54         -
        deserializer: &mut D,
          53  +
    pub fn deserialize(
          54  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   55     55   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   56     56   
        #[allow(unused_variables, unused_mut)]
   57     57   
        let mut builder = Self::builder();
   58     58   
        #[allow(
   59     59   
            unused_variables,
   60     60   
            unreachable_code,
   61     61   
            clippy::single_match,
   62     62   
            clippy::match_single_binding,
   63     63   
            clippy::diverging_sub_expression
   64     64   
        )]
   65         -
        deserializer.read_struct(&GREETINGSTRUCT_SCHEMA, (), |_, member, deser| {
          65  +
        deserializer.read_struct(&GREETINGSTRUCT_SCHEMA, &mut |member, deser| {
   66     66   
            match member.member_index() {
   67     67   
                Some(0) => {
   68     68   
                    builder.hi = Some(deser.read_string(member)?);
   69     69   
                }
   70     70   
                _ => {}
   71     71   
            }
   72     72   
            Ok(())
   73     73   
        })?;
   74     74   
        Ok(builder.build())
   75     75   
    }
   76     76   
}
          77  +
impl GreetingStruct {
          78  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          79  +
    pub fn deserialize_with_response(
          80  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          81  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          82  +
        _status: u16,
          83  +
        _body: &[u8],
          84  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          85  +
        Self::deserialize(deserializer)
          86  +
    }
          87  +
}
   77     88   
impl GreetingStruct {
   78     89   
    /// Creates a new builder-style object to manufacture [`GreetingStruct`](crate::types::GreetingStruct).
   79     90   
    pub fn builder() -> crate::types::builders::GreetingStructBuilder {
   80     91   
        crate::types::builders::GreetingStructBuilder::default()
   81     92   
    }
   82     93   
}
   83     94   
   84     95   
/// A builder for [`GreetingStruct`](crate::types::GreetingStruct).
   85     96   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   86     97   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_recursive_shapes_input_output_nested1.rs

@@ -45,45 +131,142 @@
   65     65   
            ser.write_string(&RECURSIVESHAPESINPUTOUTPUTNESTED1_MEMBER_FOO, val)?;
   66     66   
        }
   67     67   
        if let Some(ref val) = self.nested {
   68     68   
            ser.write_struct(&RECURSIVESHAPESINPUTOUTPUTNESTED1_MEMBER_NESTED, val)?;
   69     69   
        }
   70     70   
        Ok(())
   71     71   
    }
   72     72   
}
   73     73   
impl RecursiveShapesInputOutputNested1 {
   74     74   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   75         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   76         -
        deserializer: &mut D,
          75  +
    pub fn deserialize(
          76  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   77     77   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   78     78   
        #[allow(unused_variables, unused_mut)]
   79     79   
        let mut builder = Self::builder();
   80     80   
        #[allow(
   81     81   
            unused_variables,
   82     82   
            unreachable_code,
   83     83   
            clippy::single_match,
   84     84   
            clippy::match_single_binding,
   85     85   
            clippy::diverging_sub_expression
   86     86   
        )]
   87         -
        deserializer.read_struct(&RECURSIVESHAPESINPUTOUTPUTNESTED1_SCHEMA, (), |_, member, deser| {
          87  +
        deserializer.read_struct(&RECURSIVESHAPESINPUTOUTPUTNESTED1_SCHEMA, &mut |member, deser| {
   88     88   
            match member.member_index() {
   89     89   
                Some(0) => {
   90     90   
                    builder.foo = Some(deser.read_string(member)?);
   91     91   
                }
   92     92   
                Some(1) => {
   93     93   
                    builder.nested = Some(Box::new(crate::types::RecursiveShapesInputOutputNested2::deserialize(deser)?));
   94     94   
                }
   95     95   
                _ => {}
   96     96   
            }
   97     97   
            Ok(())
   98     98   
        })?;
   99     99   
        Ok(builder.build())
  100    100   
    }
  101    101   
}
         102  +
impl RecursiveShapesInputOutputNested1 {
         103  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         104  +
    pub fn deserialize_with_response(
         105  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         106  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         107  +
        _status: u16,
         108  +
        _body: &[u8],
         109  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         110  +
        Self::deserialize(deserializer)
         111  +
    }
         112  +
}
  102    113   
impl RecursiveShapesInputOutputNested1 {
  103    114   
    /// Creates a new builder-style object to manufacture [`RecursiveShapesInputOutputNested1`](crate::types::RecursiveShapesInputOutputNested1).
  104    115   
    pub fn builder() -> crate::types::builders::RecursiveShapesInputOutputNested1Builder {
  105    116   
        crate::types::builders::RecursiveShapesInputOutputNested1Builder::default()
  106    117   
    }
  107    118   
}
  108    119   
  109    120   
/// A builder for [`RecursiveShapesInputOutputNested1`](crate::types::RecursiveShapesInputOutputNested1).
  110    121   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  111    122   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_recursive_shapes_input_output_nested2.rs

@@ -13,13 +131,142 @@
   33     33   
    "bar",
   34     34   
    0,
   35     35   
);
   36     36   
static RECURSIVESHAPESINPUTOUTPUTNESTED2_MEMBER_RECURSIVE_MEMBER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   37     37   
    ::aws_smithy_schema::ShapeId::from_static(
   38     38   
        "smithy.protocoltests.rpcv2Cbor#RecursiveShapesInputOutputNested2$recursiveMember",
   39     39   
        "smithy.protocoltests.rpcv2Cbor",
   40     40   
        "RecursiveShapesInputOutputNested2",
   41     41   
    ),
   42     42   
    ::aws_smithy_schema::ShapeType::Structure,
   43         -
    "recursive_member",
          43  +
    "recursiveMember",
   44     44   
    1,
   45     45   
);
   46     46   
static RECURSIVESHAPESINPUTOUTPUTNESTED2_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   47     47   
    RECURSIVESHAPESINPUTOUTPUTNESTED2_SCHEMA_ID,
   48     48   
    ::aws_smithy_schema::ShapeType::Structure,
   49     49   
    &[
   50     50   
        &RECURSIVESHAPESINPUTOUTPUTNESTED2_MEMBER_BAR,
   51     51   
        &RECURSIVESHAPESINPUTOUTPUTNESTED2_MEMBER_RECURSIVE_MEMBER,
   52     52   
    ],
   53     53   
);
   54     54   
impl RecursiveShapesInputOutputNested2 {
   55     55   
    /// The schema for this shape.
   56     56   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &RECURSIVESHAPESINPUTOUTPUTNESTED2_SCHEMA;
   57     57   
}
   58     58   
impl ::aws_smithy_schema::serde::SerializableStruct for RecursiveShapesInputOutputNested2 {
   59     59   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   60     60   
    fn serialize_members(
   61     61   
        &self,
   62     62   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   63     63   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   64     64   
        if let Some(ref val) = self.bar {
   65     65   
            ser.write_string(&RECURSIVESHAPESINPUTOUTPUTNESTED2_MEMBER_BAR, val)?;
   66     66   
        }
   67     67   
        if let Some(ref val) = self.recursive_member {
   68     68   
            ser.write_struct(&RECURSIVESHAPESINPUTOUTPUTNESTED2_MEMBER_RECURSIVE_MEMBER, val)?;
   69     69   
        }
   70     70   
        Ok(())
   71     71   
    }
   72     72   
}
   73     73   
impl RecursiveShapesInputOutputNested2 {
   74     74   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   75         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   76         -
        deserializer: &mut D,
          75  +
    pub fn deserialize(
          76  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   77     77   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   78     78   
        #[allow(unused_variables, unused_mut)]
   79     79   
        let mut builder = Self::builder();
   80     80   
        #[allow(
   81     81   
            unused_variables,
   82     82   
            unreachable_code,
   83     83   
            clippy::single_match,
   84     84   
            clippy::match_single_binding,
   85     85   
            clippy::diverging_sub_expression
   86     86   
        )]
   87         -
        deserializer.read_struct(&RECURSIVESHAPESINPUTOUTPUTNESTED2_SCHEMA, (), |_, member, deser| {
          87  +
        deserializer.read_struct(&RECURSIVESHAPESINPUTOUTPUTNESTED2_SCHEMA, &mut |member, deser| {
   88     88   
            match member.member_index() {
   89     89   
                Some(0) => {
   90     90   
                    builder.bar = Some(deser.read_string(member)?);
   91     91   
                }
   92     92   
                Some(1) => {
   93     93   
                    builder.recursive_member = Some(crate::types::RecursiveShapesInputOutputNested1::deserialize(deser)?);
   94     94   
                }
   95     95   
                _ => {}
   96     96   
            }
   97     97   
            Ok(())
   98     98   
        })?;
   99     99   
        Ok(builder.build())
  100    100   
    }
  101    101   
}
         102  +
impl RecursiveShapesInputOutputNested2 {
         103  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         104  +
    pub fn deserialize_with_response(
         105  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         106  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         107  +
        _status: u16,
         108  +
        _body: &[u8],
         109  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         110  +
        Self::deserialize(deserializer)
         111  +
    }
         112  +
}
  102    113   
impl RecursiveShapesInputOutputNested2 {
  103    114   
    /// Creates a new builder-style object to manufacture [`RecursiveShapesInputOutputNested2`](crate::types::RecursiveShapesInputOutputNested2).
  104    115   
    pub fn builder() -> crate::types::builders::RecursiveShapesInputOutputNested2Builder {
  105    116   
        crate::types::builders::RecursiveShapesInputOutputNested2Builder::default()
  106    117   
    }
  107    118   
}
  108    119   
  109    120   
/// A builder for [`RecursiveShapesInputOutputNested2`](crate::types::RecursiveShapesInputOutputNested2).
  110    121   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  111    122   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_structure_list_member.rs

@@ -42,42 +128,139 @@
   62     62   
            ser.write_string(&STRUCTURELISTMEMBER_MEMBER_A, val)?;
   63     63   
        }
   64     64   
        if let Some(ref val) = self.b {
   65     65   
            ser.write_string(&STRUCTURELISTMEMBER_MEMBER_B, val)?;
   66     66   
        }
   67     67   
        Ok(())
   68     68   
    }
   69     69   
}
   70     70   
impl StructureListMember {
   71     71   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   72         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   73         -
        deserializer: &mut D,
          72  +
    pub fn deserialize(
          73  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   74     74   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   75     75   
        #[allow(unused_variables, unused_mut)]
   76     76   
        let mut builder = Self::builder();
   77     77   
        #[allow(
   78     78   
            unused_variables,
   79     79   
            unreachable_code,
   80     80   
            clippy::single_match,
   81     81   
            clippy::match_single_binding,
   82     82   
            clippy::diverging_sub_expression
   83     83   
        )]
   84         -
        deserializer.read_struct(&STRUCTURELISTMEMBER_SCHEMA, (), |_, member, deser| {
          84  +
        deserializer.read_struct(&STRUCTURELISTMEMBER_SCHEMA, &mut |member, deser| {
   85     85   
            match member.member_index() {
   86     86   
                Some(0) => {
   87     87   
                    builder.a = Some(deser.read_string(member)?);
   88     88   
                }
   89     89   
                Some(1) => {
   90     90   
                    builder.b = Some(deser.read_string(member)?);
   91     91   
                }
   92     92   
                _ => {}
   93     93   
            }
   94     94   
            Ok(())
   95     95   
        })?;
   96     96   
        Ok(builder.build())
   97     97   
    }
   98     98   
}
          99  +
impl StructureListMember {
         100  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         101  +
    pub fn deserialize_with_response(
         102  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         103  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         104  +
        _status: u16,
         105  +
        _body: &[u8],
         106  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         107  +
        Self::deserialize(deserializer)
         108  +
    }
         109  +
}
   99    110   
impl StructureListMember {
  100    111   
    /// Creates a new builder-style object to manufacture [`StructureListMember`](crate::types::StructureListMember).
  101    112   
    pub fn builder() -> crate::types::builders::StructureListMemberBuilder {
  102    113   
        crate::types::builders::StructureListMemberBuilder::default()
  103    114   
    }
  104    115   
}
  105    116   
  106    117   
/// A builder for [`StructureListMember`](crate::types::StructureListMember).
  107    118   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  108    119   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/_validation_exception_field.rs

@@ -47,47 +135,148 @@
   67     67   
        }
   68     68   
        {
   69     69   
            let val = &self.message;
   70     70   
            ser.write_string(&VALIDATIONEXCEPTIONFIELD_MEMBER_MESSAGE, val)?;
   71     71   
        }
   72     72   
        Ok(())
   73     73   
    }
   74     74   
}
   75     75   
impl ValidationExceptionField {
   76     76   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   77         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   78         -
        deserializer: &mut D,
          77  +
    pub fn deserialize(
          78  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   79     79   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   80     80   
        #[allow(unused_variables, unused_mut)]
   81     81   
        let mut builder = Self::builder();
   82     82   
        #[allow(
   83     83   
            unused_variables,
   84     84   
            unreachable_code,
   85     85   
            clippy::single_match,
   86     86   
            clippy::match_single_binding,
   87     87   
            clippy::diverging_sub_expression
   88     88   
        )]
   89         -
        deserializer.read_struct(&VALIDATIONEXCEPTIONFIELD_SCHEMA, (), |_, member, deser| {
          89  +
        deserializer.read_struct(&VALIDATIONEXCEPTIONFIELD_SCHEMA, &mut |member, deser| {
   90     90   
            match member.member_index() {
   91     91   
                Some(0) => {
   92     92   
                    builder.path = Some(deser.read_string(member)?);
   93     93   
                }
   94     94   
                Some(1) => {
   95     95   
                    builder.message = Some(deser.read_string(member)?);
   96     96   
                }
   97     97   
                _ => {}
   98     98   
            }
   99     99   
            Ok(())
  100    100   
        })?;
         101  +
        builder.path = builder.path.or(Some(String::new()));
         102  +
        builder.message = builder.message.or(Some(String::new()));
  101    103   
        builder
  102    104   
            .build()
  103    105   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  104    106   
    }
  105    107   
}
         108  +
impl ValidationExceptionField {
         109  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         110  +
    pub fn deserialize_with_response(
         111  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         112  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         113  +
        _status: u16,
         114  +
        _body: &[u8],
         115  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         116  +
        Self::deserialize(deserializer)
         117  +
    }
         118  +
}
  106    119   
impl ValidationExceptionField {
  107    120   
    /// Creates a new builder-style object to manufacture [`ValidationExceptionField`](crate::types::ValidationExceptionField).
  108    121   
    pub fn builder() -> crate::types::builders::ValidationExceptionFieldBuilder {
  109    122   
        crate::types::builders::ValidationExceptionFieldBuilder::default()
  110    123   
    }
  111    124   
}
  112    125   
  113    126   
/// A builder for [`ValidationExceptionField`](crate::types::ValidationExceptionField).
  114    127   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  115    128   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/error/_complex_error.rs

@@ -7,7 +148,159 @@
   27     27   
    "smithy.protocoltests.rpcv2Cbor",
   28     28   
    "ComplexError",
   29     29   
);
   30     30   
static COMPLEXERROR_MEMBER_TOP_LEVEL: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   31     31   
    ::aws_smithy_schema::ShapeId::from_static(
   32     32   
        "smithy.protocoltests.rpcv2Cbor#ComplexError$TopLevel",
   33     33   
        "smithy.protocoltests.rpcv2Cbor",
   34     34   
        "ComplexError",
   35     35   
    ),
   36     36   
    ::aws_smithy_schema::ShapeType::String,
   37         -
    "top_level",
          37  +
    "TopLevel",
   38     38   
    0,
   39     39   
);
   40     40   
static COMPLEXERROR_MEMBER_NESTED: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   41     41   
    ::aws_smithy_schema::ShapeId::from_static(
   42     42   
        "smithy.protocoltests.rpcv2Cbor#ComplexError$Nested",
   43     43   
        "smithy.protocoltests.rpcv2Cbor",
   44     44   
        "ComplexError",
   45     45   
    ),
   46     46   
    ::aws_smithy_schema::ShapeType::Structure,
   47         -
    "nested",
          47  +
    "Nested",
   48     48   
    1,
   49     49   
);
   50     50   
static COMPLEXERROR_MEMBER_MESSAGE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   51     51   
    ::aws_smithy_schema::ShapeId::from_static(
   52     52   
        "smithy.protocoltests.rpcv2Cbor#ComplexError$Message",
   53     53   
        "smithy.protocoltests.rpcv2Cbor",
   54     54   
        "ComplexError",
   55     55   
    ),
   56     56   
    ::aws_smithy_schema::ShapeType::String,
   57         -
    "message",
          57  +
    "Message",
   58     58   
    2,
   59     59   
);
   60     60   
static COMPLEXERROR_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   61     61   
    COMPLEXERROR_SCHEMA_ID,
   62     62   
    ::aws_smithy_schema::ShapeType::Structure,
   63     63   
    &[&COMPLEXERROR_MEMBER_TOP_LEVEL, &COMPLEXERROR_MEMBER_NESTED, &COMPLEXERROR_MEMBER_MESSAGE],
   64     64   
);
   65     65   
impl ComplexError {
   66     66   
    /// The schema for this shape.
   67     67   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &COMPLEXERROR_SCHEMA;
   68     68   
}
   69     69   
impl ::aws_smithy_schema::serde::SerializableStruct for ComplexError {
   70     70   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   71     71   
    fn serialize_members(
   72     72   
        &self,
   73     73   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   74     74   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   75     75   
        if let Some(ref val) = self.top_level {
   76     76   
            ser.write_string(&COMPLEXERROR_MEMBER_TOP_LEVEL, val)?;
   77     77   
        }
   78     78   
        if let Some(ref val) = self.nested {
   79     79   
            ser.write_struct(&COMPLEXERROR_MEMBER_NESTED, val)?;
   80     80   
        }
   81     81   
        if let Some(ref val) = self.message {
   82     82   
            ser.write_string(&COMPLEXERROR_MEMBER_MESSAGE, val)?;
   83     83   
        }
   84     84   
        Ok(())
   85     85   
    }
   86     86   
}
   87     87   
impl ComplexError {
   88     88   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   89         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   90         -
        deserializer: &mut D,
          89  +
    pub fn deserialize(
          90  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   91     91   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   92     92   
        #[allow(unused_variables, unused_mut)]
   93     93   
        let mut builder = Self::builder();
   94     94   
        #[allow(
   95     95   
            unused_variables,
   96     96   
            unreachable_code,
   97     97   
            clippy::single_match,
   98     98   
            clippy::match_single_binding,
   99     99   
            clippy::diverging_sub_expression
  100    100   
        )]
  101         -
        deserializer.read_struct(&COMPLEXERROR_SCHEMA, (), |_, member, deser| {
         101  +
        deserializer.read_struct(&COMPLEXERROR_SCHEMA, &mut |member, deser| {
  102    102   
            match member.member_index() {
  103    103   
                Some(0) => {
  104    104   
                    builder.top_level = Some(deser.read_string(member)?);
  105    105   
                }
  106    106   
                Some(1) => {
  107    107   
                    builder.nested = Some(crate::types::ComplexNestedErrorData::deserialize(deser)?);
  108    108   
                }
  109    109   
                Some(2) => {
  110    110   
                    builder.message = Some(deser.read_string(member)?);
  111    111   
                }
  112    112   
                _ => {}
  113    113   
            }
  114    114   
            Ok(())
  115    115   
        })?;
  116    116   
        Ok(builder.build())
  117    117   
    }
  118    118   
}
         119  +
impl ComplexError {
         120  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         121  +
    pub fn deserialize_with_response(
         122  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         123  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         124  +
        _status: u16,
         125  +
        _body: &[u8],
         126  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         127  +
        Self::deserialize(deserializer)
         128  +
    }
         129  +
}
  119    130   
impl ComplexError {
  120    131   
    /// Returns the error message.
  121    132   
    pub fn message(&self) -> ::std::option::Option<&str> {
  122    133   
        self.message.as_deref()
  123    134   
    }
  124    135   
}
  125    136   
impl ::std::fmt::Display for ComplexError {
  126    137   
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  127    138   
        ::std::write!(f, "ComplexError")?;
  128    139   
        if let ::std::option::Option::Some(inner_1) = &self.message {

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/types/error/_invalid_greeting.rs

@@ -1,1 +102,113 @@
   13     13   
    "smithy.protocoltests.rpcv2Cbor",
   14     14   
    "InvalidGreeting",
   15     15   
);
   16     16   
static INVALIDGREETING_MEMBER_MESSAGE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   17     17   
    ::aws_smithy_schema::ShapeId::from_static(
   18     18   
        "smithy.protocoltests.rpcv2Cbor#InvalidGreeting$Message",
   19     19   
        "smithy.protocoltests.rpcv2Cbor",
   20     20   
        "InvalidGreeting",
   21     21   
    ),
   22     22   
    ::aws_smithy_schema::ShapeType::String,
   23         -
    "message",
          23  +
    "Message",
   24     24   
    0,
   25     25   
);
   26     26   
static INVALIDGREETING_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   27     27   
    INVALIDGREETING_SCHEMA_ID,
   28     28   
    ::aws_smithy_schema::ShapeType::Structure,
   29     29   
    &[&INVALIDGREETING_MEMBER_MESSAGE],
   30     30   
);
   31     31   
impl InvalidGreeting {
   32     32   
    /// The schema for this shape.
   33     33   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &INVALIDGREETING_SCHEMA;
   34     34   
}
   35     35   
impl ::aws_smithy_schema::serde::SerializableStruct for InvalidGreeting {
   36     36   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   37     37   
    fn serialize_members(
   38     38   
        &self,
   39     39   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   40     40   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   41     41   
        if let Some(ref val) = self.message {
   42     42   
            ser.write_string(&INVALIDGREETING_MEMBER_MESSAGE, val)?;
   43     43   
        }
   44     44   
        Ok(())
   45     45   
    }
   46     46   
}
   47     47   
impl InvalidGreeting {
   48     48   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   49         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   50         -
        deserializer: &mut D,
          49  +
    pub fn deserialize(
          50  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   51     51   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   52     52   
        #[allow(unused_variables, unused_mut)]
   53     53   
        let mut builder = Self::builder();
   54     54   
        #[allow(
   55     55   
            unused_variables,
   56     56   
            unreachable_code,
   57     57   
            clippy::single_match,
   58     58   
            clippy::match_single_binding,
   59     59   
            clippy::diverging_sub_expression
   60     60   
        )]
   61         -
        deserializer.read_struct(&INVALIDGREETING_SCHEMA, (), |_, member, deser| {
          61  +
        deserializer.read_struct(&INVALIDGREETING_SCHEMA, &mut |member, deser| {
   62     62   
            match member.member_index() {
   63     63   
                Some(0) => {
   64     64   
                    builder.message = Some(deser.read_string(member)?);
   65     65   
                }
   66     66   
                _ => {}
   67     67   
            }
   68     68   
            Ok(())
   69     69   
        })?;
   70     70   
        Ok(builder.build())
   71     71   
    }
   72     72   
}
          73  +
impl InvalidGreeting {
          74  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          75  +
    pub fn deserialize_with_response(
          76  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          77  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          78  +
        _status: u16,
          79  +
        _body: &[u8],
          80  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          81  +
        Self::deserialize(deserializer)
          82  +
    }
          83  +
}
   73     84   
impl InvalidGreeting {
   74     85   
    /// Returns the error message.
   75     86   
    pub fn message(&self) -> ::std::option::Option<&str> {
   76     87   
        self.message.as_deref()
   77     88   
    }
   78     89   
}
   79     90   
impl ::std::fmt::Display for InvalidGreeting {
   80     91   
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
   81     92   
        ::std::write!(f, "InvalidGreeting")?;
   82     93   
        if let ::std::option::Option::Some(inner_1) = &self.message {