Client Test

Client Test

rev. 32b1b3c3761061baed26023be3219639e42d7d12 (ignoring whitespace)

Files changed:

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

@@ -71,71 +221,221 @@
   91     91   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   92     92   
    "RpcV2CborListsOutput",
   93     93   
);
   94     94   
static RPCV2CBORLISTSOUTPUT_MEMBER_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$stringList",
   97     97   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   98     98   
        "RpcV2CborListsOutput",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::List,
  101         -
    "string_list",
         101  +
    "stringList",
  102    102   
    0,
  103    103   
);
  104    104   
static RPCV2CBORLISTSOUTPUT_MEMBER_STRING_SET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$stringSet",
  107    107   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  108    108   
        "RpcV2CborListsOutput",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::List,
  111         -
    "string_set",
         111  +
    "stringSet",
  112    112   
    1,
  113    113   
);
  114    114   
static RPCV2CBORLISTSOUTPUT_MEMBER_INTEGER_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  115    115   
    ::aws_smithy_schema::ShapeId::from_static(
  116    116   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$integerList",
  117    117   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  118    118   
        "RpcV2CborListsOutput",
  119    119   
    ),
  120    120   
    ::aws_smithy_schema::ShapeType::List,
  121         -
    "integer_list",
         121  +
    "integerList",
  122    122   
    2,
  123    123   
);
  124    124   
static RPCV2CBORLISTSOUTPUT_MEMBER_BOOLEAN_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  125    125   
    ::aws_smithy_schema::ShapeId::from_static(
  126    126   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$booleanList",
  127    127   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  128    128   
        "RpcV2CborListsOutput",
  129    129   
    ),
  130    130   
    ::aws_smithy_schema::ShapeType::List,
  131         -
    "boolean_list",
         131  +
    "booleanList",
  132    132   
    3,
  133    133   
);
  134    134   
static RPCV2CBORLISTSOUTPUT_MEMBER_TIMESTAMP_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  135    135   
    ::aws_smithy_schema::ShapeId::from_static(
  136    136   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$timestampList",
  137    137   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  138    138   
        "RpcV2CborListsOutput",
  139    139   
    ),
  140    140   
    ::aws_smithy_schema::ShapeType::List,
  141         -
    "timestamp_list",
         141  +
    "timestampList",
  142    142   
    4,
  143    143   
);
  144    144   
static RPCV2CBORLISTSOUTPUT_MEMBER_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  145    145   
    ::aws_smithy_schema::ShapeId::from_static(
  146    146   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$enumList",
  147    147   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  148    148   
        "RpcV2CborListsOutput",
  149    149   
    ),
  150    150   
    ::aws_smithy_schema::ShapeType::List,
  151         -
    "enum_list",
         151  +
    "enumList",
  152    152   
    5,
  153    153   
);
  154    154   
static RPCV2CBORLISTSOUTPUT_MEMBER_INT_ENUM_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  155    155   
    ::aws_smithy_schema::ShapeId::from_static(
  156    156   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$intEnumList",
  157    157   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  158    158   
        "RpcV2CborListsOutput",
  159    159   
    ),
  160    160   
    ::aws_smithy_schema::ShapeType::List,
  161         -
    "int_enum_list",
         161  +
    "intEnumList",
  162    162   
    6,
  163    163   
);
  164    164   
static RPCV2CBORLISTSOUTPUT_MEMBER_NESTED_STRING_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  165    165   
    ::aws_smithy_schema::ShapeId::from_static(
  166    166   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$nestedStringList",
  167    167   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  168    168   
        "RpcV2CborListsOutput",
  169    169   
    ),
  170    170   
    ::aws_smithy_schema::ShapeType::List,
  171         -
    "nested_string_list",
         171  +
    "nestedStringList",
  172    172   
    7,
  173    173   
);
  174    174   
static RPCV2CBORLISTSOUTPUT_MEMBER_STRUCTURE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  175    175   
    ::aws_smithy_schema::ShapeId::from_static(
  176    176   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$structureList",
  177    177   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  178    178   
        "RpcV2CborListsOutput",
  179    179   
    ),
  180    180   
    ::aws_smithy_schema::ShapeType::List,
  181         -
    "structure_list",
         181  +
    "structureList",
  182    182   
    8,
  183    183   
);
  184    184   
static RPCV2CBORLISTSOUTPUT_MEMBER_BLOB_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  185    185   
    ::aws_smithy_schema::ShapeId::from_static(
  186    186   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborListsOutput$blobList",
  187    187   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
  188    188   
        "RpcV2CborListsOutput",
  189    189   
    ),
  190    190   
    ::aws_smithy_schema::ShapeType::List,
  191         -
    "blob_list",
         191  +
    "blobList",
  192    192   
    9,
  193    193   
);
  194    194   
static RPCV2CBORLISTSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  195    195   
    RPCV2CBORLISTSOUTPUT_SCHEMA_ID,
  196    196   
    ::aws_smithy_schema::ShapeType::Structure,
  197    197   
    &[
  198    198   
        &RPCV2CBORLISTSOUTPUT_MEMBER_STRING_LIST,
  199    199   
        &RPCV2CBORLISTSOUTPUT_MEMBER_STRING_SET,
  200    200   
        &RPCV2CBORLISTSOUTPUT_MEMBER_INTEGER_LIST,
  201    201   
        &RPCV2CBORLISTSOUTPUT_MEMBER_BOOLEAN_LIST,
@@ -272,272 +515,476 @@
  292    292   
                    }
  293    293   
                    Ok(())
  294    294   
                },
  295    295   
            )?;
  296    296   
        }
  297    297   
        if let Some(ref val) = self.nested_string_list {
  298    298   
            ser.write_list(
  299    299   
                &RPCV2CBORLISTSOUTPUT_MEMBER_NESTED_STRING_LIST,
  300    300   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  301    301   
                    for item in val {
  302         -
                        todo!("schema: unsupported list element type");
         302  +
                        ser.write_list(
         303  +
                            &::aws_smithy_schema::prelude::DOCUMENT,
         304  +
                            &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         305  +
                                for item in item {
         306  +
                                    ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
         307  +
                                }
         308  +
                                Ok(())
         309  +
                            },
         310  +
                        )?;
  303    311   
                    }
  304    312   
                    Ok(())
  305    313   
                },
  306    314   
            )?;
  307    315   
        }
  308    316   
        if let Some(ref val) = self.structure_list {
  309    317   
            ser.write_list(
  310    318   
                &RPCV2CBORLISTSOUTPUT_MEMBER_STRUCTURE_LIST,
  311    319   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  312    320   
                    for item in val {
  313    321   
                        ser.write_struct(crate::types::StructureListMember::SCHEMA, item)?;
  314    322   
                    }
  315    323   
                    Ok(())
  316    324   
                },
  317    325   
            )?;
  318    326   
        }
  319    327   
        if let Some(ref val) = self.blob_list {
  320    328   
            ser.write_list(
  321    329   
                &RPCV2CBORLISTSOUTPUT_MEMBER_BLOB_LIST,
  322    330   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  323    331   
                    for item in val {
  324    332   
                        ser.write_blob(&aws_smithy_schema::prelude::BLOB, item)?;
  325    333   
                    }
  326    334   
                    Ok(())
  327    335   
                },
  328    336   
            )?;
  329    337   
        }
  330    338   
        Ok(())
  331    339   
    }
  332    340   
}
  333    341   
impl RpcV2CborListsOutput {
  334    342   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  335         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  336         -
        deserializer: &mut D,
         343  +
    pub fn deserialize(
         344  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  337    345   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  338    346   
        #[allow(unused_variables, unused_mut)]
  339    347   
        let mut builder = Self::builder();
  340    348   
        #[allow(
  341    349   
            unused_variables,
  342    350   
            unreachable_code,
  343    351   
            clippy::single_match,
  344    352   
            clippy::match_single_binding,
  345    353   
            clippy::diverging_sub_expression
  346    354   
        )]
  347         -
        deserializer.read_struct(&RPCV2CBORLISTSOUTPUT_SCHEMA, (), |_, member, deser| {
         355  +
        deserializer.read_struct(&RPCV2CBORLISTSOUTPUT_SCHEMA, &mut |member, deser| {
  348    356   
            match member.member_index() {
  349    357   
                Some(0) => {
  350         -
                    builder.string_list = Some({
  351         -
                        let container = if let Some(cap) = deser.container_size() {
  352         -
                            Vec::with_capacity(cap)
  353         -
                        } else {
  354         -
                            Vec::new()
  355         -
                        };
  356         -
                        deser.read_list(member, container, |mut list, deser| {
  357         -
                            list.push(deser.read_string(member)?);
  358         -
                            Ok(list)
  359         -
                        })?
  360         -
                    });
         358  +
                    builder.string_list = Some(deser.read_string_list(member)?);
  361    359   
                }
  362    360   
                Some(1) => {
  363         -
                    builder.string_set = Some({
  364         -
                        let container = if let Some(cap) = deser.container_size() {
  365         -
                            Vec::with_capacity(cap)
  366         -
                        } else {
  367         -
                            Vec::new()
  368         -
                        };
  369         -
                        deser.read_list(member, container, |mut list, deser| {
  370         -
                            list.push(deser.read_string(member)?);
  371         -
                            Ok(list)
  372         -
                        })?
  373         -
                    });
         361  +
                    builder.string_set = Some(deser.read_string_list(member)?);
  374    362   
                }
  375    363   
                Some(2) => {
  376         -
                    builder.integer_list = Some({
  377         -
                        let container = if let Some(cap) = deser.container_size() {
  378         -
                            Vec::with_capacity(cap)
  379         -
                        } else {
  380         -
                            Vec::new()
  381         -
                        };
  382         -
                        deser.read_list(member, container, |mut list, deser| {
  383         -
                            list.push(deser.read_integer(member)?);
  384         -
                            Ok(list)
  385         -
                        })?
  386         -
                    });
         364  +
                    builder.integer_list = Some(deser.read_integer_list(member)?);
  387    365   
                }
  388    366   
                Some(3) => {
  389    367   
                    builder.boolean_list = Some({
  390         -
                        let container = if let Some(cap) = deser.container_size() {
  391         -
                            Vec::with_capacity(cap)
  392         -
                        } else {
  393         -
                            Vec::new()
  394         -
                        };
  395         -
                        deser.read_list(member, container, |mut list, deser| {
  396         -
                            list.push(deser.read_boolean(member)?);
  397         -
                            Ok(list)
  398         -
                        })?
         368  +
                        let mut container = Vec::new();
         369  +
                        deser.read_list(member, &mut |deser| {
         370  +
                            container.push(deser.read_boolean(member)?);
         371  +
                            Ok(())
         372  +
                        })?;
         373  +
                        container
  399    374   
                    });
  400    375   
                }
  401    376   
                Some(4) => {
  402    377   
                    builder.timestamp_list = Some({
  403         -
                        let container = if let Some(cap) = deser.container_size() {
  404         -
                            Vec::with_capacity(cap)
  405         -
                        } else {
  406         -
                            Vec::new()
  407         -
                        };
  408         -
                        deser.read_list(member, container, |mut list, deser| {
  409         -
                            list.push(deser.read_timestamp(member)?);
  410         -
                            Ok(list)
  411         -
                        })?
         378  +
                        let mut container = Vec::new();
         379  +
                        deser.read_list(member, &mut |deser| {
         380  +
                            container.push(deser.read_timestamp(member)?);
         381  +
                            Ok(())
         382  +
                        })?;
         383  +
                        container
  412    384   
                    });
  413    385   
                }
  414    386   
                Some(5) => {
  415    387   
                    builder.enum_list = Some({
  416         -
                        let container = if let Some(cap) = deser.container_size() {
  417         -
                            Vec::with_capacity(cap)
  418         -
                        } else {
  419         -
                            Vec::new()
  420         -
                        };
  421         -
                        deser.read_list(member, container, |mut list, deser| {
  422         -
                            list.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
  423         -
                            Ok(list)
  424         -
                        })?
         388  +
                        let mut container = Vec::new();
         389  +
                        deser.read_list(member, &mut |deser| {
         390  +
                            container.push(crate::types::FooEnum::from(deser.read_string(member)?.as_str()));
         391  +
                            Ok(())
         392  +
                        })?;
         393  +
                        container
  425    394   
                    });
  426    395   
                }
  427    396   
                Some(6) => {
  428         -
                    builder.int_enum_list = Some({
  429         -
                        let container = if let Some(cap) = deser.container_size() {
  430         -
                            Vec::with_capacity(cap)
  431         -
                        } else {
  432         -
                            Vec::new()
  433         -
                        };
  434         -
                        deser.read_list(member, container, |mut list, deser| {
  435         -
                            list.push(deser.read_integer(member)?);
  436         -
                            Ok(list)
  437         -
                        })?
  438         -
                    });
         397  +
                    builder.int_enum_list = Some(deser.read_integer_list(member)?);
  439    398   
                }
  440    399   
                Some(7) => {
  441    400   
                    builder.nested_string_list = Some({
  442         -
                        let container = if let Some(cap) = deser.container_size() {
  443         -
                            Vec::with_capacity(cap)
  444         -
                        } else {
  445         -
                            Vec::new()
  446         -
                        };
  447         -
                        deser.read_list(member, container, |mut list, deser| {
  448         -
                            list.push(todo!("deserialize nested aggregate"));
  449         -
                            Ok(list)
  450         -
                        })?
         401  +
                        let mut container = Vec::new();
         402  +
                        deser.read_list(member, &mut |deser| {
         403  +
                            container.push({
         404  +
                                let mut list = Vec::new();
         405  +
                                deser.read_list(member, &mut |deser| {
         406  +
                                    list.push(deser.read_string(&::aws_smithy_schema::prelude::DOCUMENT)?);
         407  +
                                    Ok(())
         408  +
                                })?;
         409  +
                                list
         410  +
                            });
         411  +
                            Ok(())
         412  +
                        })?;
         413  +
                        container
  451    414   
                    });
  452    415   
                }
  453    416   
                Some(8) => {
  454    417   
                    builder.structure_list = Some({
  455         -
                        let container = if let Some(cap) = deser.container_size() {
  456         -
                            Vec::with_capacity(cap)
  457         -
                        } else {
  458         -
                            Vec::new()
  459         -
                        };
  460         -
                        deser.read_list(member, container, |mut list, deser| {
  461         -
                            list.push(crate::types::StructureListMember::deserialize(deser)?);
  462         -
                            Ok(list)
  463         -
                        })?
         418  +
                        let mut container = Vec::new();
         419  +
                        deser.read_list(member, &mut |deser| {
         420  +
                            container.push(crate::types::StructureListMember::deserialize(deser)?);
         421  +
                            Ok(())
         422  +
                        })?;
         423  +
                        container
  464    424   
                    });
  465    425   
                }
  466    426   
                Some(9) => {
  467         -
                    builder.blob_list = Some({
  468         -
                        let container = if let Some(cap) = deser.container_size() {
  469         -
                            Vec::with_capacity(cap)
  470         -
                        } else {
  471         -
                            Vec::new()
  472         -
                        };
  473         -
                        deser.read_list(member, container, |mut list, deser| {
  474         -
                            list.push(deser.read_blob(member)?);
  475         -
                            Ok(list)
  476         -
                        })?
  477         -
                    });
         427  +
                    builder.blob_list = Some(deser.read_blob_list(member)?);
  478    428   
                }
  479    429   
                _ => {}
  480    430   
            }
  481    431   
            Ok(())
  482    432   
        })?;
  483    433   
        Ok(builder.build())
  484    434   
    }
  485    435   
}
         436  +
impl RpcV2CborListsOutput {
         437  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         438  +
    pub fn deserialize_with_response(
         439  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         440  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         441  +
        _status: u16,
         442  +
        _body: &[u8],
         443  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         444  +
        Self::deserialize(deserializer)
         445  +
    }
         446  +
}
  486    447   
impl RpcV2CborListsOutput {
  487    448   
    /// Creates a new builder-style object to manufacture [`RpcV2CborListsOutput`](crate::operation::rpc_v2_cbor_lists::RpcV2CborListsOutput).
  488    449   
    pub fn builder() -> crate::operation::rpc_v2_cbor_lists::builders::RpcV2CborListsOutputBuilder {
  489    450   
        crate::operation::rpc_v2_cbor_lists::builders::RpcV2CborListsOutputBuilder::default()
  490    451   
    }
  491    452   
}
  492    453   
  493    454   
/// A builder for [`RpcV2CborListsOutput`](crate::operation::rpc_v2_cbor_lists::RpcV2CborListsOutput).
  494    455   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  495    456   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor/rust-client-codegen/src/operation/rpc_v2_cbor_sparse_maps.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 `RpcV2CborSparseMaps`.
    3      3   
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
    4      4   
#[non_exhaustive]
    5      5   
pub struct RpcV2CborSparseMaps;
    6      6   
impl RpcV2CborSparseMaps {
    7      7   
    /// Creates a new `RpcV2CborSparseMaps`
    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::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsInput::SCHEMA;
          13  +
    /// The schema for this operation's output shape.
          14  +
    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput::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::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsInput,
   14     18   
    ) -> ::std::result::Result<
   15     19   
        crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput,
   16     20   
        ::aws_smithy_runtime_api::client::result::SdkError<
   17     21   
            crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsError,
   18     22   
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
   19     23   
        >,
   20     24   
    > {
@@ -104,108 +166,171 @@
  124    128   
                crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsError,
  125    129   
            >::new());
  126    130   
  127    131   
        ::std::borrow::Cow::Owned(rcb)
  128    132   
    }
  129    133   
}
  130    134   
  131    135   
#[derive(Debug)]
  132    136   
struct RpcV2CborSparseMapsResponseDeserializer;
  133    137   
impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for RpcV2CborSparseMapsResponseDeserializer {
  134         -
    fn deserialize_nonstreaming(
         138  +
    fn deserialize_nonstreaming_with_config(
  135    139   
        &self,
  136    140   
        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
         141  +
        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
  137    142   
    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
  138    143   
        let (success, status) = (response.status().is_success(), response.status().as_u16());
  139    144   
        let headers = response.headers();
  140    145   
        let body = response.body().bytes().expect("body loaded");
  141    146   
        #[allow(unused_mut)]
  142    147   
        let mut force_error = false;
  143    148   
  144    149   
        let parse_result = if !success && status != 200 || force_error {
  145    150   
            crate::protocol_serde::shape_rpc_v2_cbor_sparse_maps::de_rpc_v2_cbor_sparse_maps_http_error(status, headers, body)
  146    151   
        } else {
@@ -530,535 +590,599 @@
  550    555   
            .expect("the config must have a deserializer");
  551    556   
  552    557   
        let parsed = de.deserialize_streaming(&mut http_response);
  553    558   
        let parsed = parsed.unwrap_or_else(|| {
  554    559   
            let http_response = http_response.map(|body| {
  555    560   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  556    561   
                    body.bytes().unwrap(),
  557    562   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  558    563   
                )))
  559    564   
            });
  560         -
            de.deserialize_nonstreaming(&http_response)
         565  +
            // Build a config bag with the protocol for schema-based deserialization
         566  +
            #[allow(unused_mut)]
         567  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         568  +
         569  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  561    570   
        });
  562    571   
        let parsed = parsed
  563    572   
            .expect("should be successful response")
  564    573   
            .downcast::<crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput>()
  565    574   
            .unwrap();
  566    575   
        ::pretty_assertions::assert_eq!(
  567    576   
            parsed.sparse_struct_map,
  568    577   
            expected_output.sparse_struct_map,
  569    578   
            "Unexpected value for `sparse_struct_map`"
  570    579   
        );
@@ -618,627 +678,691 @@
  638    647   
            .expect("the config must have a deserializer");
  639    648   
  640    649   
        let parsed = de.deserialize_streaming(&mut http_response);
  641    650   
        let parsed = parsed.unwrap_or_else(|| {
  642    651   
            let http_response = http_response.map(|body| {
  643    652   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  644    653   
                    body.bytes().unwrap(),
  645    654   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  646    655   
                )))
  647    656   
            });
  648         -
            de.deserialize_nonstreaming(&http_response)
         657  +
            // Build a config bag with the protocol for schema-based deserialization
         658  +
            #[allow(unused_mut)]
         659  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         660  +
         661  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  649    662   
        });
  650    663   
        let parsed = parsed
  651    664   
            .expect("should be successful response")
  652    665   
            .downcast::<crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput>()
  653    666   
            .unwrap();
  654    667   
        ::pretty_assertions::assert_eq!(
  655    668   
            parsed.sparse_struct_map,
  656    669   
            expected_output.sparse_struct_map,
  657    670   
            "Unexpected value for `sparse_struct_map`"
  658    671   
        );
@@ -690,703 +750,767 @@
  710    723   
            .expect("the config must have a deserializer");
  711    724   
  712    725   
        let parsed = de.deserialize_streaming(&mut http_response);
  713    726   
        let parsed = parsed.unwrap_or_else(|| {
  714    727   
            let http_response = http_response.map(|body| {
  715    728   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  716    729   
                    body.bytes().unwrap(),
  717    730   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  718    731   
                )))
  719    732   
            });
  720         -
            de.deserialize_nonstreaming(&http_response)
         733  +
            // Build a config bag with the protocol for schema-based deserialization
         734  +
            #[allow(unused_mut)]
         735  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         736  +
         737  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  721    738   
        });
  722    739   
        let parsed = parsed
  723    740   
            .expect("should be successful response")
  724    741   
            .downcast::<crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput>()
  725    742   
            .unwrap();
  726    743   
        ::pretty_assertions::assert_eq!(
  727    744   
            parsed.sparse_struct_map,
  728    745   
            expected_output.sparse_struct_map,
  729    746   
            "Unexpected value for `sparse_struct_map`"
  730    747   
        );
@@ -763,780 +823,844 @@
  783    800   
            .expect("the config must have a deserializer");
  784    801   
  785    802   
        let parsed = de.deserialize_streaming(&mut http_response);
  786    803   
        let parsed = parsed.unwrap_or_else(|| {
  787    804   
            let http_response = http_response.map(|body| {
  788    805   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  789    806   
                    body.bytes().unwrap(),
  790    807   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  791    808   
                )))
  792    809   
            });
  793         -
            de.deserialize_nonstreaming(&http_response)
         810  +
            // Build a config bag with the protocol for schema-based deserialization
         811  +
            #[allow(unused_mut)]
         812  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         813  +
         814  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  794    815   
        });
  795    816   
        let parsed = parsed
  796    817   
            .expect("should be successful response")
  797    818   
            .downcast::<crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput>()
  798    819   
            .unwrap();
  799    820   
        ::pretty_assertions::assert_eq!(
  800    821   
            parsed.sparse_struct_map,
  801    822   
            expected_output.sparse_struct_map,
  802    823   
            "Unexpected value for `sparse_struct_map`"
  803    824   
        );
@@ -841,862 +901,926 @@
  861    882   
            .expect("the config must have a deserializer");
  862    883   
  863    884   
        let parsed = de.deserialize_streaming(&mut http_response);
  864    885   
        let parsed = parsed.unwrap_or_else(|| {
  865    886   
            let http_response = http_response.map(|body| {
  866    887   
                ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(&::aws_smithy_protocol_test::decode_body_data(
  867    888   
                    body.bytes().unwrap(),
  868    889   
                    ::aws_smithy_protocol_test::MediaType::from("application/cbor"),
  869    890   
                )))
  870    891   
            });
  871         -
            de.deserialize_nonstreaming(&http_response)
         892  +
            // Build a config bag with the protocol for schema-based deserialization
         893  +
            #[allow(unused_mut)]
         894  +
            let mut test_cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
         895  +
         896  +
            de.deserialize_nonstreaming_with_config(&http_response, &test_cfg)
  872    897   
        });
  873    898   
        let parsed = parsed
  874    899   
            .expect("should be successful response")
  875    900   
            .downcast::<crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput>()
  876    901   
            .unwrap();
  877    902   
        ::pretty_assertions::assert_eq!(
  878    903   
            parsed.sparse_struct_map,
  879    904   
            expected_output.sparse_struct_map,
  880    905   
            "Unexpected value for `sparse_struct_map`"
  881    906   
        );

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

@@ -30,30 +130,130 @@
   50     50   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   51     51   
    "RpcV2CborSparseMapsInput",
   52     52   
);
   53     53   
static RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_STRUCT_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   54     54   
    ::aws_smithy_schema::ShapeId::from_static(
   55     55   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsInput$sparseStructMap",
   56     56   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   57     57   
        "RpcV2CborSparseMapsInput",
   58     58   
    ),
   59     59   
    ::aws_smithy_schema::ShapeType::Map,
   60         -
    "sparse_struct_map",
          60  +
    "sparseStructMap",
   61     61   
    0,
   62     62   
);
   63     63   
static RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_NUMBER_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   64     64   
    ::aws_smithy_schema::ShapeId::from_static(
   65     65   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsInput$sparseNumberMap",
   66     66   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   67     67   
        "RpcV2CborSparseMapsInput",
   68     68   
    ),
   69     69   
    ::aws_smithy_schema::ShapeType::Map,
   70         -
    "sparse_number_map",
          70  +
    "sparseNumberMap",
   71     71   
    1,
   72     72   
);
   73     73   
static RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_BOOLEAN_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   74     74   
    ::aws_smithy_schema::ShapeId::from_static(
   75     75   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsInput$sparseBooleanMap",
   76     76   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   77     77   
        "RpcV2CborSparseMapsInput",
   78     78   
    ),
   79     79   
    ::aws_smithy_schema::ShapeType::Map,
   80         -
    "sparse_boolean_map",
          80  +
    "sparseBooleanMap",
   81     81   
    2,
   82     82   
);
   83     83   
static RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_STRING_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   84     84   
    ::aws_smithy_schema::ShapeId::from_static(
   85     85   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsInput$sparseStringMap",
   86     86   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   87     87   
        "RpcV2CborSparseMapsInput",
   88     88   
    ),
   89     89   
    ::aws_smithy_schema::ShapeType::Map,
   90         -
    "sparse_string_map",
          90  +
    "sparseStringMap",
   91     91   
    3,
   92     92   
);
   93     93   
static RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_SET_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   94     94   
    ::aws_smithy_schema::ShapeId::from_static(
   95     95   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsInput$sparseSetMap",
   96     96   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   97     97   
        "RpcV2CborSparseMapsInput",
   98     98   
    ),
   99     99   
    ::aws_smithy_schema::ShapeType::Map,
  100         -
    "sparse_set_map",
         100  +
    "sparseSetMap",
  101    101   
    4,
  102    102   
);
  103    103   
static RPCV2CBORSPARSEMAPSINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  104    104   
    RPCV2CBORSPARSEMAPSINPUT_SCHEMA_ID,
  105    105   
    ::aws_smithy_schema::ShapeType::Structure,
  106    106   
    &[
  107    107   
        &RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_STRUCT_MAP,
  108    108   
        &RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_NUMBER_MAP,
  109    109   
        &RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_BOOLEAN_MAP,
  110    110   
        &RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_STRING_MAP,
@@ -178,178 +381,392 @@
  198    198   
            )?;
  199    199   
        }
  200    200   
        if let Some(ref val) = self.sparse_set_map {
  201    201   
            ser.write_map(
  202    202   
                &RPCV2CBORSPARSEMAPSINPUT_MEMBER_SPARSE_SET_MAP,
  203    203   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  204    204   
                    for (key, value) in val {
  205    205   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  206    206   
                        match value {
  207    207   
                            Some(value) => {
  208         -
                                todo!("schema: unsupported map value type");
         208  +
                                ser.write_list(
         209  +
                                    &::aws_smithy_schema::prelude::DOCUMENT,
         210  +
                                    &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         211  +
                                        for item in value {
         212  +
                                            ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
         213  +
                                        }
         214  +
                                        Ok(())
         215  +
                                    },
         216  +
                                )?;
  209    217   
                            }
  210    218   
                            None => {
  211    219   
                                ser.write_null(&::aws_smithy_schema::prelude::STRING)?;
  212    220   
                            }
  213    221   
                        }
  214    222   
                    }
  215    223   
                    Ok(())
  216    224   
                },
  217    225   
            )?;
  218    226   
        }
  219    227   
        Ok(())
  220    228   
    }
  221    229   
}
  222    230   
impl RpcV2CborSparseMapsInput {
  223    231   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  224         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  225         -
        deserializer: &mut D,
         232  +
    pub fn deserialize(
         233  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  226    234   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  227    235   
        #[allow(unused_variables, unused_mut)]
  228    236   
        let mut builder = Self::builder();
  229    237   
        #[allow(
  230    238   
            unused_variables,
  231    239   
            unreachable_code,
  232    240   
            clippy::single_match,
  233    241   
            clippy::match_single_binding,
  234    242   
            clippy::diverging_sub_expression
  235    243   
        )]
  236         -
        deserializer.read_struct(&RPCV2CBORSPARSEMAPSINPUT_SCHEMA, (), |_, member, deser| {
         244  +
        deserializer.read_struct(&RPCV2CBORSPARSEMAPSINPUT_SCHEMA, &mut |member, deser| {
  237    245   
            match member.member_index() {
  238    246   
                Some(0) => {
  239    247   
                    builder.sparse_struct_map = Some({
  240         -
                        let container = if let Some(cap) = deser.container_size() {
  241         -
                            std::collections::HashMap::with_capacity(cap)
  242         -
                        } else {
  243         -
                            std::collections::HashMap::new()
  244         -
                        };
  245         -
                        deser.read_map(member, container, |mut map, key, deser| {
  246         -
                            map.insert(
         248  +
                        let mut container = std::collections::HashMap::new();
         249  +
                        deser.read_map(member, &mut |key, deser| {
         250  +
                            container.insert(
  247    251   
                                key,
  248    252   
                                if deser.is_null() {
  249         -
                                    deser.read_string(member).ok();
         253  +
                                    deser.read_null()?;
  250    254   
                                    None
  251    255   
                                } else {
  252    256   
                                    Some(crate::types::GreetingStruct::deserialize(deser)?)
  253    257   
                                },
  254    258   
                            );
  255         -
                            Ok(map)
  256         -
                        })?
         259  +
                            Ok(())
         260  +
                        })?;
         261  +
                        container
  257    262   
                    });
  258    263   
                }
  259    264   
                Some(1) => {
  260    265   
                    builder.sparse_number_map = Some({
  261         -
                        let container = if let Some(cap) = deser.container_size() {
  262         -
                            std::collections::HashMap::with_capacity(cap)
  263         -
                        } else {
  264         -
                            std::collections::HashMap::new()
  265         -
                        };
  266         -
                        deser.read_map(member, container, |mut map, key, deser| {
  267         -
                            map.insert(
         266  +
                        let mut container = std::collections::HashMap::new();
         267  +
                        deser.read_map(member, &mut |key, deser| {
         268  +
                            container.insert(
  268    269   
                                key,
  269    270   
                                if deser.is_null() {
  270         -
                                    deser.read_string(member).ok();
         271  +
                                    deser.read_null()?;
  271    272   
                                    None
  272    273   
                                } else {
  273    274   
                                    Some(deser.read_integer(member)?)
  274    275   
                                },
  275    276   
                            );
  276         -
                            Ok(map)
  277         -
                        })?
         277  +
                            Ok(())
         278  +
                        })?;
         279  +
                        container
  278    280   
                    });
  279    281   
                }
  280    282   
                Some(2) => {
  281    283   
                    builder.sparse_boolean_map = Some({
  282         -
                        let container = if let Some(cap) = deser.container_size() {
  283         -
                            std::collections::HashMap::with_capacity(cap)
  284         -
                        } else {
  285         -
                            std::collections::HashMap::new()
  286         -
                        };
  287         -
                        deser.read_map(member, container, |mut map, key, deser| {
  288         -
                            map.insert(
         284  +
                        let mut container = std::collections::HashMap::new();
         285  +
                        deser.read_map(member, &mut |key, deser| {
         286  +
                            container.insert(
  289    287   
                                key,
  290    288   
                                if deser.is_null() {
  291         -
                                    deser.read_string(member).ok();
         289  +
                                    deser.read_null()?;
  292    290   
                                    None
  293    291   
                                } else {
  294    292   
                                    Some(deser.read_boolean(member)?)
  295    293   
                                },
  296    294   
                            );
  297         -
                            Ok(map)
  298         -
                        })?
         295  +
                            Ok(())
         296  +
                        })?;
         297  +
                        container
  299    298   
                    });
  300    299   
                }
  301    300   
                Some(3) => {
  302    301   
                    builder.sparse_string_map = Some({
  303         -
                        let container = if let Some(cap) = deser.container_size() {
  304         -
                            std::collections::HashMap::with_capacity(cap)
  305         -
                        } else {
  306         -
                            std::collections::HashMap::new()
  307         -
                        };
  308         -
                        deser.read_map(member, container, |mut map, key, deser| {
  309         -
                            map.insert(
         302  +
                        let mut container = std::collections::HashMap::new();
         303  +
                        deser.read_map(member, &mut |key, deser| {
         304  +
                            container.insert(
  310    305   
                                key,
  311    306   
                                if deser.is_null() {
  312         -
                                    deser.read_string(member).ok();
         307  +
                                    deser.read_null()?;
  313    308   
                                    None
  314    309   
                                } else {
  315    310   
                                    Some(deser.read_string(member)?)
  316    311   
                                },
  317    312   
                            );
  318         -
                            Ok(map)
  319         -
                        })?
         313  +
                            Ok(())
         314  +
                        })?;
         315  +
                        container
  320    316   
                    });
  321    317   
                }
  322    318   
                Some(4) => {
  323    319   
                    builder.sparse_set_map = Some({
  324         -
                        let container = if let Some(cap) = deser.container_size() {
  325         -
                            std::collections::HashMap::with_capacity(cap)
  326         -
                        } else {
  327         -
                            std::collections::HashMap::new()
  328         -
                        };
  329         -
                        deser.read_map(member, container, |mut map, key, deser| {
  330         -
                            map.insert(
         320  +
                        let mut container = std::collections::HashMap::new();
         321  +
                        deser.read_map(member, &mut |key, deser| {
         322  +
                            container.insert(
  331    323   
                                key,
  332    324   
                                if deser.is_null() {
  333         -
                                    deser.read_string(member).ok();
         325  +
                                    deser.read_null()?;
  334    326   
                                    None
  335    327   
                                } else {
  336         -
                                    Some(todo!("deserialize nested aggregate"))
         328  +
                                    Some({
         329  +
                                        let mut list = Vec::new();
         330  +
                                        deser.read_list(member, &mut |deser| {
         331  +
                                            list.push(deser.read_string(&::aws_smithy_schema::prelude::DOCUMENT)?);
         332  +
                                            Ok(())
         333  +
                                        })?;
         334  +
                                        list
         335  +
                                    })
  337    336   
                                },
  338    337   
                            );
  339         -
                            Ok(map)
  340         -
                        })?
         338  +
                            Ok(())
         339  +
                        })?;
         340  +
                        container
  341    341   
                    });
  342    342   
                }
  343    343   
                _ => {}
  344    344   
            }
  345    345   
            Ok(())
  346    346   
        })?;
  347    347   
        builder
  348    348   
            .build()
  349    349   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  350    350   
    }
  351    351   
}
         352  +
impl RpcV2CborSparseMapsInput {
         353  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         354  +
    pub fn deserialize_with_response(
         355  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         356  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         357  +
        _status: u16,
         358  +
        _body: &[u8],
         359  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         360  +
        Self::deserialize(deserializer)
         361  +
    }
         362  +
}
  352    363   
impl RpcV2CborSparseMapsInput {
  353    364   
    /// Creates a new builder-style object to manufacture [`RpcV2CborSparseMapsInput`](crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsInput).
  354    365   
    pub fn builder() -> crate::operation::rpc_v2_cbor_sparse_maps::builders::RpcV2CborSparseMapsInputBuilder {
  355    366   
        crate::operation::rpc_v2_cbor_sparse_maps::builders::RpcV2CborSparseMapsInputBuilder::default()
  356    367   
    }
  357    368   
}
  358    369   
  359    370   
/// A builder for [`RpcV2CborSparseMapsInput`](crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsInput).
  360    371   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  361    372   
#[non_exhaustive]

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

@@ -30,30 +130,130 @@
   50     50   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   51     51   
    "RpcV2CborSparseMapsOutput",
   52     52   
);
   53     53   
static RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_STRUCT_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   54     54   
    ::aws_smithy_schema::ShapeId::from_static(
   55     55   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsOutput$sparseStructMap",
   56     56   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   57     57   
        "RpcV2CborSparseMapsOutput",
   58     58   
    ),
   59     59   
    ::aws_smithy_schema::ShapeType::Map,
   60         -
    "sparse_struct_map",
          60  +
    "sparseStructMap",
   61     61   
    0,
   62     62   
);
   63     63   
static RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_NUMBER_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   64     64   
    ::aws_smithy_schema::ShapeId::from_static(
   65     65   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsOutput$sparseNumberMap",
   66     66   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   67     67   
        "RpcV2CborSparseMapsOutput",
   68     68   
    ),
   69     69   
    ::aws_smithy_schema::ShapeType::Map,
   70         -
    "sparse_number_map",
          70  +
    "sparseNumberMap",
   71     71   
    1,
   72     72   
);
   73     73   
static RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_BOOLEAN_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   74     74   
    ::aws_smithy_schema::ShapeId::from_static(
   75     75   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsOutput$sparseBooleanMap",
   76     76   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   77     77   
        "RpcV2CborSparseMapsOutput",
   78     78   
    ),
   79     79   
    ::aws_smithy_schema::ShapeType::Map,
   80         -
    "sparse_boolean_map",
          80  +
    "sparseBooleanMap",
   81     81   
    2,
   82     82   
);
   83     83   
static RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_STRING_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   84     84   
    ::aws_smithy_schema::ShapeId::from_static(
   85     85   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsOutput$sparseStringMap",
   86     86   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   87     87   
        "RpcV2CborSparseMapsOutput",
   88     88   
    ),
   89     89   
    ::aws_smithy_schema::ShapeType::Map,
   90         -
    "sparse_string_map",
          90  +
    "sparseStringMap",
   91     91   
    3,
   92     92   
);
   93     93   
static RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_SET_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   94     94   
    ::aws_smithy_schema::ShapeId::from_static(
   95     95   
        "smithy.protocoltests.rpcv2Cbor.synthetic#RpcV2CborSparseMapsOutput$sparseSetMap",
   96     96   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   97     97   
        "RpcV2CborSparseMapsOutput",
   98     98   
    ),
   99     99   
    ::aws_smithy_schema::ShapeType::Map,
  100         -
    "sparse_set_map",
         100  +
    "sparseSetMap",
  101    101   
    4,
  102    102   
);
  103    103   
static RPCV2CBORSPARSEMAPSOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  104    104   
    RPCV2CBORSPARSEMAPSOUTPUT_SCHEMA_ID,
  105    105   
    ::aws_smithy_schema::ShapeType::Structure,
  106    106   
    &[
  107    107   
        &RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_STRUCT_MAP,
  108    108   
        &RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_NUMBER_MAP,
  109    109   
        &RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_BOOLEAN_MAP,
  110    110   
        &RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_STRING_MAP,
@@ -178,178 +379,390 @@
  198    198   
            )?;
  199    199   
        }
  200    200   
        if let Some(ref val) = self.sparse_set_map {
  201    201   
            ser.write_map(
  202    202   
                &RPCV2CBORSPARSEMAPSOUTPUT_MEMBER_SPARSE_SET_MAP,
  203    203   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  204    204   
                    for (key, value) in val {
  205    205   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  206    206   
                        match value {
  207    207   
                            Some(value) => {
  208         -
                                todo!("schema: unsupported map value type");
         208  +
                                ser.write_list(
         209  +
                                    &::aws_smithy_schema::prelude::DOCUMENT,
         210  +
                                    &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         211  +
                                        for item in value {
         212  +
                                            ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
         213  +
                                        }
         214  +
                                        Ok(())
         215  +
                                    },
         216  +
                                )?;
  209    217   
                            }
  210    218   
                            None => {
  211    219   
                                ser.write_null(&::aws_smithy_schema::prelude::STRING)?;
  212    220   
                            }
  213    221   
                        }
  214    222   
                    }
  215    223   
                    Ok(())
  216    224   
                },
  217    225   
            )?;
  218    226   
        }
  219    227   
        Ok(())
  220    228   
    }
  221    229   
}
  222    230   
impl RpcV2CborSparseMapsOutput {
  223    231   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  224         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  225         -
        deserializer: &mut D,
         232  +
    pub fn deserialize(
         233  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  226    234   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  227    235   
        #[allow(unused_variables, unused_mut)]
  228    236   
        let mut builder = Self::builder();
  229    237   
        #[allow(
  230    238   
            unused_variables,
  231    239   
            unreachable_code,
  232    240   
            clippy::single_match,
  233    241   
            clippy::match_single_binding,
  234    242   
            clippy::diverging_sub_expression
  235    243   
        )]
  236         -
        deserializer.read_struct(&RPCV2CBORSPARSEMAPSOUTPUT_SCHEMA, (), |_, member, deser| {
         244  +
        deserializer.read_struct(&RPCV2CBORSPARSEMAPSOUTPUT_SCHEMA, &mut |member, deser| {
  237    245   
            match member.member_index() {
  238    246   
                Some(0) => {
  239    247   
                    builder.sparse_struct_map = Some({
  240         -
                        let container = if let Some(cap) = deser.container_size() {
  241         -
                            std::collections::HashMap::with_capacity(cap)
  242         -
                        } else {
  243         -
                            std::collections::HashMap::new()
  244         -
                        };
  245         -
                        deser.read_map(member, container, |mut map, key, deser| {
  246         -
                            map.insert(
         248  +
                        let mut container = std::collections::HashMap::new();
         249  +
                        deser.read_map(member, &mut |key, deser| {
         250  +
                            container.insert(
  247    251   
                                key,
  248    252   
                                if deser.is_null() {
  249         -
                                    deser.read_string(member).ok();
         253  +
                                    deser.read_null()?;
  250    254   
                                    None
  251    255   
                                } else {
  252    256   
                                    Some(crate::types::GreetingStruct::deserialize(deser)?)
  253    257   
                                },
  254    258   
                            );
  255         -
                            Ok(map)
  256         -
                        })?
         259  +
                            Ok(())
         260  +
                        })?;
         261  +
                        container
  257    262   
                    });
  258    263   
                }
  259    264   
                Some(1) => {
  260    265   
                    builder.sparse_number_map = Some({
  261         -
                        let container = if let Some(cap) = deser.container_size() {
  262         -
                            std::collections::HashMap::with_capacity(cap)
  263         -
                        } else {
  264         -
                            std::collections::HashMap::new()
  265         -
                        };
  266         -
                        deser.read_map(member, container, |mut map, key, deser| {
  267         -
                            map.insert(
         266  +
                        let mut container = std::collections::HashMap::new();
         267  +
                        deser.read_map(member, &mut |key, deser| {
         268  +
                            container.insert(
  268    269   
                                key,
  269    270   
                                if deser.is_null() {
  270         -
                                    deser.read_string(member).ok();
         271  +
                                    deser.read_null()?;
  271    272   
                                    None
  272    273   
                                } else {
  273    274   
                                    Some(deser.read_integer(member)?)
  274    275   
                                },
  275    276   
                            );
  276         -
                            Ok(map)
  277         -
                        })?
         277  +
                            Ok(())
         278  +
                        })?;
         279  +
                        container
  278    280   
                    });
  279    281   
                }
  280    282   
                Some(2) => {
  281    283   
                    builder.sparse_boolean_map = Some({
  282         -
                        let container = if let Some(cap) = deser.container_size() {
  283         -
                            std::collections::HashMap::with_capacity(cap)
  284         -
                        } else {
  285         -
                            std::collections::HashMap::new()
  286         -
                        };
  287         -
                        deser.read_map(member, container, |mut map, key, deser| {
  288         -
                            map.insert(
         284  +
                        let mut container = std::collections::HashMap::new();
         285  +
                        deser.read_map(member, &mut |key, deser| {
         286  +
                            container.insert(
  289    287   
                                key,
  290    288   
                                if deser.is_null() {
  291         -
                                    deser.read_string(member).ok();
         289  +
                                    deser.read_null()?;
  292    290   
                                    None
  293    291   
                                } else {
  294    292   
                                    Some(deser.read_boolean(member)?)
  295    293   
                                },
  296    294   
                            );
  297         -
                            Ok(map)
  298         -
                        })?
         295  +
                            Ok(())
         296  +
                        })?;
         297  +
                        container
  299    298   
                    });
  300    299   
                }
  301    300   
                Some(3) => {
  302    301   
                    builder.sparse_string_map = Some({
  303         -
                        let container = if let Some(cap) = deser.container_size() {
  304         -
                            std::collections::HashMap::with_capacity(cap)
  305         -
                        } else {
  306         -
                            std::collections::HashMap::new()
  307         -
                        };
  308         -
                        deser.read_map(member, container, |mut map, key, deser| {
  309         -
                            map.insert(
         302  +
                        let mut container = std::collections::HashMap::new();
         303  +
                        deser.read_map(member, &mut |key, deser| {
         304  +
                            container.insert(
  310    305   
                                key,
  311    306   
                                if deser.is_null() {
  312         -
                                    deser.read_string(member).ok();
         307  +
                                    deser.read_null()?;
  313    308   
                                    None
  314    309   
                                } else {
  315    310   
                                    Some(deser.read_string(member)?)
  316    311   
                                },
  317    312   
                            );
  318         -
                            Ok(map)
  319         -
                        })?
         313  +
                            Ok(())
         314  +
                        })?;
         315  +
                        container
  320    316   
                    });
  321    317   
                }
  322    318   
                Some(4) => {
  323    319   
                    builder.sparse_set_map = Some({
  324         -
                        let container = if let Some(cap) = deser.container_size() {
  325         -
                            std::collections::HashMap::with_capacity(cap)
  326         -
                        } else {
  327         -
                            std::collections::HashMap::new()
  328         -
                        };
  329         -
                        deser.read_map(member, container, |mut map, key, deser| {
  330         -
                            map.insert(
         320  +
                        let mut container = std::collections::HashMap::new();
         321  +
                        deser.read_map(member, &mut |key, deser| {
         322  +
                            container.insert(
  331    323   
                                key,
  332    324   
                                if deser.is_null() {
  333         -
                                    deser.read_string(member).ok();
         325  +
                                    deser.read_null()?;
  334    326   
                                    None
  335    327   
                                } else {
  336         -
                                    Some(todo!("deserialize nested aggregate"))
         328  +
                                    Some({
         329  +
                                        let mut list = Vec::new();
         330  +
                                        deser.read_list(member, &mut |deser| {
         331  +
                                            list.push(deser.read_string(&::aws_smithy_schema::prelude::DOCUMENT)?);
         332  +
                                            Ok(())
         333  +
                                        })?;
         334  +
                                        list
         335  +
                                    })
  337    336   
                                },
  338    337   
                            );
  339         -
                            Ok(map)
  340         -
                        })?
         338  +
                            Ok(())
         339  +
                        })?;
         340  +
                        container
  341    341   
                    });
  342    342   
                }
  343    343   
                _ => {}
  344    344   
            }
  345    345   
            Ok(())
  346    346   
        })?;
  347    347   
        Ok(builder.build())
  348    348   
    }
  349    349   
}
         350  +
impl RpcV2CborSparseMapsOutput {
         351  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         352  +
    pub fn deserialize_with_response(
         353  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         354  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         355  +
        _status: u16,
         356  +
        _body: &[u8],
         357  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         358  +
        Self::deserialize(deserializer)
         359  +
    }
         360  +
}
  350    361   
impl RpcV2CborSparseMapsOutput {
  351    362   
    /// Creates a new builder-style object to manufacture [`RpcV2CborSparseMapsOutput`](crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput).
  352    363   
    pub fn builder() -> crate::operation::rpc_v2_cbor_sparse_maps::builders::RpcV2CborSparseMapsOutputBuilder {
  353    364   
        crate::operation::rpc_v2_cbor_sparse_maps::builders::RpcV2CborSparseMapsOutputBuilder::default()
  354    365   
    }
  355    366   
}
  356    367   
  357    368   
/// A builder for [`RpcV2CborSparseMapsOutput`](crate::operation::rpc_v2_cbor_sparse_maps::RpcV2CborSparseMapsOutput).
  358    369   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  359    370   
#[non_exhaustive]

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]