Client Test

Client Test

rev. 32b1b3c3761061baed26023be3219639e42d7d12

Files changed:

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_batch_statement_error.rs

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

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_batch_statement_request.rs

@@ -13,13 +179,188 @@
   33     33   
    "com.amazonaws.dynamodb",
   34     34   
    "BatchStatementRequest",
   35     35   
);
   36     36   
static BATCHSTATEMENTREQUEST_MEMBER_STATEMENT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   37     37   
    ::aws_smithy_schema::ShapeId::from_static(
   38     38   
        "com.amazonaws.dynamodb#BatchStatementRequest$Statement",
   39     39   
        "com.amazonaws.dynamodb",
   40     40   
        "BatchStatementRequest",
   41     41   
    ),
   42     42   
    ::aws_smithy_schema::ShapeType::String,
   43         -
    "statement",
          43  +
    "Statement",
   44     44   
    0,
   45     45   
);
   46     46   
static BATCHSTATEMENTREQUEST_MEMBER_PARAMETERS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   47     47   
    ::aws_smithy_schema::ShapeId::from_static(
   48     48   
        "com.amazonaws.dynamodb#BatchStatementRequest$Parameters",
   49     49   
        "com.amazonaws.dynamodb",
   50     50   
        "BatchStatementRequest",
   51     51   
    ),
   52     52   
    ::aws_smithy_schema::ShapeType::List,
   53         -
    "parameters",
          53  +
    "Parameters",
   54     54   
    1,
   55     55   
);
   56     56   
static BATCHSTATEMENTREQUEST_MEMBER_CONSISTENT_READ: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   57     57   
    ::aws_smithy_schema::ShapeId::from_static(
   58     58   
        "com.amazonaws.dynamodb#BatchStatementRequest$ConsistentRead",
   59     59   
        "com.amazonaws.dynamodb",
   60     60   
        "BatchStatementRequest",
   61     61   
    ),
   62     62   
    ::aws_smithy_schema::ShapeType::Boolean,
   63         -
    "consistent_read",
          63  +
    "ConsistentRead",
   64     64   
    2,
   65     65   
);
   66     66   
static BATCHSTATEMENTREQUEST_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   67     67   
    BATCHSTATEMENTREQUEST_SCHEMA_ID,
   68     68   
    ::aws_smithy_schema::ShapeType::Structure,
   69     69   
    &[
   70     70   
        &BATCHSTATEMENTREQUEST_MEMBER_STATEMENT,
   71     71   
        &BATCHSTATEMENTREQUEST_MEMBER_PARAMETERS,
   72     72   
        &BATCHSTATEMENTREQUEST_MEMBER_CONSISTENT_READ,
   73     73   
    ],
   74     74   
);
   75     75   
impl BatchStatementRequest {
   76     76   
    /// The schema for this shape.
   77     77   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &BATCHSTATEMENTREQUEST_SCHEMA;
   78     78   
}
   79     79   
impl ::aws_smithy_schema::serde::SerializableStruct for BatchStatementRequest {
   80     80   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   81     81   
    fn serialize_members(
   82     82   
        &self,
   83     83   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   84     84   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   85     85   
        {
   86     86   
            let val = &self.statement;
   87     87   
            ser.write_string(&BATCHSTATEMENTREQUEST_MEMBER_STATEMENT, val)?;
   88     88   
        }
   89     89   
        if let Some(ref val) = self.parameters {
   90     90   
            ser.write_list(
   91     91   
                &BATCHSTATEMENTREQUEST_MEMBER_PARAMETERS,
   92     92   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   93     93   
                    for item in val {
   94         -
                        todo!("schema: unsupported list element type");
          94  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, item)?;
   95     95   
                    }
   96     96   
                    Ok(())
   97     97   
                },
   98     98   
            )?;
   99     99   
        }
  100    100   
        if let Some(ref val) = self.consistent_read {
  101    101   
            ser.write_boolean(&BATCHSTATEMENTREQUEST_MEMBER_CONSISTENT_READ, *val)?;
  102    102   
        }
  103    103   
        Ok(())
  104    104   
    }
  105    105   
}
  106    106   
impl BatchStatementRequest {
  107    107   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  108         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  109         -
        deserializer: &mut D,
         108  +
    pub fn deserialize(
         109  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  110    110   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  111    111   
        #[allow(unused_variables, unused_mut)]
  112    112   
        let mut builder = Self::builder();
  113    113   
        #[allow(
  114    114   
            unused_variables,
  115    115   
            unreachable_code,
  116    116   
            clippy::single_match,
  117    117   
            clippy::match_single_binding,
  118    118   
            clippy::diverging_sub_expression
  119    119   
        )]
  120         -
        deserializer.read_struct(&BATCHSTATEMENTREQUEST_SCHEMA, (), |_, member, deser| {
         120  +
        deserializer.read_struct(&BATCHSTATEMENTREQUEST_SCHEMA, &mut |member, deser| {
  121    121   
            match member.member_index() {
  122    122   
                Some(0) => {
  123    123   
                    builder.statement = Some(deser.read_string(member)?);
  124    124   
                }
  125    125   
                Some(1) => {
  126    126   
                    builder.parameters = Some({
  127         -
                        let container = if let Some(cap) = deser.container_size() {
  128         -
                            Vec::with_capacity(cap)
  129         -
                        } else {
  130         -
                            Vec::new()
  131         -
                        };
  132         -
                        deser.read_list(member, container, |mut list, deser| {
  133         -
                            list.push(todo!("deserialize nested aggregate"));
  134         -
                            Ok(list)
  135         -
                        })?
         127  +
                        let mut container = Vec::new();
         128  +
                        deser.read_list(member, &mut |deser| {
         129  +
                            container.push(crate::types::AttributeValue::deserialize(deser)?);
         130  +
                            Ok(())
         131  +
                        })?;
         132  +
                        container
  136    133   
                    });
  137    134   
                }
  138    135   
                Some(2) => {
  139    136   
                    builder.consistent_read = Some(deser.read_boolean(member)?);
  140    137   
                }
  141    138   
                _ => {}
  142    139   
            }
  143    140   
            Ok(())
  144    141   
        })?;
         142  +
        builder.statement = builder.statement.or(Some(String::new()));
  145    143   
        builder
  146    144   
            .build()
  147    145   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  148    146   
    }
  149    147   
}
         148  +
impl BatchStatementRequest {
         149  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         150  +
    pub fn deserialize_with_response(
         151  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         152  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         153  +
        _status: u16,
         154  +
        _body: &[u8],
         155  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         156  +
        Self::deserialize(deserializer)
         157  +
    }
         158  +
}
  150    159   
impl BatchStatementRequest {
  151    160   
    /// Creates a new builder-style object to manufacture [`BatchStatementRequest`](crate::types::BatchStatementRequest).
  152    161   
    pub fn builder() -> crate::types::builders::BatchStatementRequestBuilder {
  153    162   
        crate::types::builders::BatchStatementRequestBuilder::default()
  154    163   
    }
  155    164   
}
  156    165   
  157    166   
/// A builder for [`BatchStatementRequest`](crate::types::BatchStatementRequest).
  158    167   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  159    168   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_batch_statement_response.rs

@@ -10,10 +174,182 @@
   30     30   
    "com.amazonaws.dynamodb",
   31     31   
    "BatchStatementResponse",
   32     32   
);
   33     33   
static BATCHSTATEMENTRESPONSE_MEMBER_ERROR: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   34     34   
    ::aws_smithy_schema::ShapeId::from_static(
   35     35   
        "com.amazonaws.dynamodb#BatchStatementResponse$Error",
   36     36   
        "com.amazonaws.dynamodb",
   37     37   
        "BatchStatementResponse",
   38     38   
    ),
   39     39   
    ::aws_smithy_schema::ShapeType::Structure,
   40         -
    "error",
          40  +
    "Error",
   41     41   
    0,
   42     42   
);
   43     43   
static BATCHSTATEMENTRESPONSE_MEMBER_TABLE_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   44     44   
    ::aws_smithy_schema::ShapeId::from_static(
   45     45   
        "com.amazonaws.dynamodb#BatchStatementResponse$TableName",
   46     46   
        "com.amazonaws.dynamodb",
   47     47   
        "BatchStatementResponse",
   48     48   
    ),
   49     49   
    ::aws_smithy_schema::ShapeType::String,
   50         -
    "table_name",
          50  +
    "TableName",
   51     51   
    1,
   52     52   
);
   53     53   
static BATCHSTATEMENTRESPONSE_MEMBER_ITEM: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   54     54   
    ::aws_smithy_schema::ShapeId::from_static(
   55     55   
        "com.amazonaws.dynamodb#BatchStatementResponse$Item",
   56     56   
        "com.amazonaws.dynamodb",
   57     57   
        "BatchStatementResponse",
   58     58   
    ),
   59     59   
    ::aws_smithy_schema::ShapeType::Map,
   60         -
    "item",
          60  +
    "Item",
   61     61   
    2,
   62     62   
);
   63     63   
static BATCHSTATEMENTRESPONSE_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   64     64   
    BATCHSTATEMENTRESPONSE_SCHEMA_ID,
   65     65   
    ::aws_smithy_schema::ShapeType::Structure,
   66     66   
    &[
   67     67   
        &BATCHSTATEMENTRESPONSE_MEMBER_ERROR,
   68     68   
        &BATCHSTATEMENTRESPONSE_MEMBER_TABLE_NAME,
   69     69   
        &BATCHSTATEMENTRESPONSE_MEMBER_ITEM,
   70     70   
    ],
   71     71   
);
   72     72   
impl BatchStatementResponse {
   73     73   
    /// The schema for this shape.
   74     74   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &BATCHSTATEMENTRESPONSE_SCHEMA;
   75     75   
}
   76     76   
impl ::aws_smithy_schema::serde::SerializableStruct for BatchStatementResponse {
   77     77   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   78     78   
    fn serialize_members(
   79     79   
        &self,
   80     80   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   81     81   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   82     82   
        if let Some(ref val) = self.error {
   83     83   
            ser.write_struct(&BATCHSTATEMENTRESPONSE_MEMBER_ERROR, val)?;
   84     84   
        }
   85     85   
        if let Some(ref val) = self.table_name {
   86     86   
            ser.write_string(&BATCHSTATEMENTRESPONSE_MEMBER_TABLE_NAME, val)?;
   87     87   
        }
   88     88   
        if let Some(ref val) = self.item {
   89     89   
            ser.write_map(
   90     90   
                &BATCHSTATEMENTRESPONSE_MEMBER_ITEM,
   91     91   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   92     92   
                    for (key, value) in val {
   93     93   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   94         -
                        todo!("schema: unsupported map value type");
          94  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
   95     95   
                    }
   96     96   
                    Ok(())
   97     97   
                },
   98     98   
            )?;
   99     99   
        }
  100    100   
        Ok(())
  101    101   
    }
  102    102   
}
  103    103   
impl BatchStatementResponse {
  104    104   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  105         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  106         -
        deserializer: &mut D,
         105  +
    pub fn deserialize(
         106  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  107    107   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  108    108   
        #[allow(unused_variables, unused_mut)]
  109    109   
        let mut builder = Self::builder();
  110    110   
        #[allow(
  111    111   
            unused_variables,
  112    112   
            unreachable_code,
  113    113   
            clippy::single_match,
  114    114   
            clippy::match_single_binding,
  115    115   
            clippy::diverging_sub_expression
  116    116   
        )]
  117         -
        deserializer.read_struct(&BATCHSTATEMENTRESPONSE_SCHEMA, (), |_, member, deser| {
         117  +
        deserializer.read_struct(&BATCHSTATEMENTRESPONSE_SCHEMA, &mut |member, deser| {
  118    118   
            match member.member_index() {
  119    119   
                Some(0) => {
  120    120   
                    builder.error = Some(crate::types::BatchStatementError::deserialize(deser)?);
  121    121   
                }
  122    122   
                Some(1) => {
  123    123   
                    builder.table_name = Some(deser.read_string(member)?);
  124    124   
                }
  125    125   
                Some(2) => {
  126    126   
                    builder.item = Some({
  127         -
                        let container = if let Some(cap) = deser.container_size() {
  128         -
                            std::collections::HashMap::with_capacity(cap)
  129         -
                        } else {
  130         -
                            std::collections::HashMap::new()
  131         -
                        };
  132         -
                        deser.read_map(member, container, |mut map, key, deser| {
  133         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  134         -
                            Ok(map)
  135         -
                        })?
         127  +
                        let mut container = std::collections::HashMap::new();
         128  +
                        deser.read_map(member, &mut |key, deser| {
         129  +
                            container.insert(key, crate::types::AttributeValue::deserialize(deser)?);
         130  +
                            Ok(())
         131  +
                        })?;
         132  +
                        container
  136    133   
                    });
  137    134   
                }
  138    135   
                _ => {}
  139    136   
            }
  140    137   
            Ok(())
  141    138   
        })?;
  142    139   
        Ok(builder.build())
  143    140   
    }
  144    141   
}
         142  +
impl BatchStatementResponse {
         143  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         144  +
    pub fn deserialize_with_response(
         145  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         146  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         147  +
        _status: u16,
         148  +
        _body: &[u8],
         149  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         150  +
        Self::deserialize(deserializer)
         151  +
    }
         152  +
}
  145    153   
impl BatchStatementResponse {
  146    154   
    /// Creates a new builder-style object to manufacture [`BatchStatementResponse`](crate::types::BatchStatementResponse).
  147    155   
    pub fn builder() -> crate::types::builders::BatchStatementResponseBuilder {
  148    156   
        crate::types::builders::BatchStatementResponseBuilder::default()
  149    157   
    }
  150    158   
}
  151    159   
  152    160   
/// A builder for [`BatchStatementResponse`](crate::types::BatchStatementResponse).
  153    161   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  154    162   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_billing_mode_summary.rs

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

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_cancellation_reason.rs

@@ -10,10 +174,182 @@
   30     30   
    "com.amazonaws.dynamodb",
   31     31   
    "CancellationReason",
   32     32   
);
   33     33   
static CANCELLATIONREASON_MEMBER_ITEM: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   34     34   
    ::aws_smithy_schema::ShapeId::from_static(
   35     35   
        "com.amazonaws.dynamodb#CancellationReason$Item",
   36     36   
        "com.amazonaws.dynamodb",
   37     37   
        "CancellationReason",
   38     38   
    ),
   39     39   
    ::aws_smithy_schema::ShapeType::Map,
   40         -
    "item",
          40  +
    "Item",
   41     41   
    0,
   42     42   
);
   43     43   
static CANCELLATIONREASON_MEMBER_CODE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   44     44   
    ::aws_smithy_schema::ShapeId::from_static(
   45     45   
        "com.amazonaws.dynamodb#CancellationReason$Code",
   46     46   
        "com.amazonaws.dynamodb",
   47     47   
        "CancellationReason",
   48     48   
    ),
   49     49   
    ::aws_smithy_schema::ShapeType::String,
   50         -
    "code",
          50  +
    "Code",
   51     51   
    1,
   52     52   
);
   53     53   
static CANCELLATIONREASON_MEMBER_MESSAGE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   54     54   
    ::aws_smithy_schema::ShapeId::from_static(
   55     55   
        "com.amazonaws.dynamodb#CancellationReason$Message",
   56     56   
        "com.amazonaws.dynamodb",
   57     57   
        "CancellationReason",
   58     58   
    ),
   59     59   
    ::aws_smithy_schema::ShapeType::String,
   60         -
    "message",
          60  +
    "Message",
   61     61   
    2,
   62     62   
);
   63     63   
static CANCELLATIONREASON_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   64     64   
    CANCELLATIONREASON_SCHEMA_ID,
   65     65   
    ::aws_smithy_schema::ShapeType::Structure,
   66     66   
    &[
   67     67   
        &CANCELLATIONREASON_MEMBER_ITEM,
   68     68   
        &CANCELLATIONREASON_MEMBER_CODE,
   69     69   
        &CANCELLATIONREASON_MEMBER_MESSAGE,
   70     70   
    ],
   71     71   
);
   72     72   
impl CancellationReason {
   73     73   
    /// The schema for this shape.
   74     74   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &CANCELLATIONREASON_SCHEMA;
   75     75   
}
   76     76   
impl ::aws_smithy_schema::serde::SerializableStruct for CancellationReason {
   77     77   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   78     78   
    fn serialize_members(
   79     79   
        &self,
   80     80   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   81     81   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   82     82   
        if let Some(ref val) = self.item {
   83     83   
            ser.write_map(
   84     84   
                &CANCELLATIONREASON_MEMBER_ITEM,
   85     85   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   86     86   
                    for (key, value) in val {
   87     87   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
   88         -
                        todo!("schema: unsupported map value type");
          88  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
   89     89   
                    }
   90     90   
                    Ok(())
   91     91   
                },
   92     92   
            )?;
   93     93   
        }
   94     94   
        if let Some(ref val) = self.code {
   95     95   
            ser.write_string(&CANCELLATIONREASON_MEMBER_CODE, val)?;
   96     96   
        }
   97     97   
        if let Some(ref val) = self.message {
   98     98   
            ser.write_string(&CANCELLATIONREASON_MEMBER_MESSAGE, val)?;
   99     99   
        }
  100    100   
        Ok(())
  101    101   
    }
  102    102   
}
  103    103   
impl CancellationReason {
  104    104   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  105         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  106         -
        deserializer: &mut D,
         105  +
    pub fn deserialize(
         106  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  107    107   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  108    108   
        #[allow(unused_variables, unused_mut)]
  109    109   
        let mut builder = Self::builder();
  110    110   
        #[allow(
  111    111   
            unused_variables,
  112    112   
            unreachable_code,
  113    113   
            clippy::single_match,
  114    114   
            clippy::match_single_binding,
  115    115   
            clippy::diverging_sub_expression
  116    116   
        )]
  117         -
        deserializer.read_struct(&CANCELLATIONREASON_SCHEMA, (), |_, member, deser| {
         117  +
        deserializer.read_struct(&CANCELLATIONREASON_SCHEMA, &mut |member, deser| {
  118    118   
            match member.member_index() {
  119    119   
                Some(0) => {
  120    120   
                    builder.item = Some({
  121         -
                        let container = if let Some(cap) = deser.container_size() {
  122         -
                            std::collections::HashMap::with_capacity(cap)
  123         -
                        } else {
  124         -
                            std::collections::HashMap::new()
  125         -
                        };
  126         -
                        deser.read_map(member, container, |mut map, key, deser| {
  127         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  128         -
                            Ok(map)
  129         -
                        })?
         121  +
                        let mut container = std::collections::HashMap::new();
         122  +
                        deser.read_map(member, &mut |key, deser| {
         123  +
                            container.insert(key, crate::types::AttributeValue::deserialize(deser)?);
         124  +
                            Ok(())
         125  +
                        })?;
         126  +
                        container
  130    127   
                    });
  131    128   
                }
  132    129   
                Some(1) => {
  133    130   
                    builder.code = Some(deser.read_string(member)?);
  134    131   
                }
  135    132   
                Some(2) => {
  136    133   
                    builder.message = Some(deser.read_string(member)?);
  137    134   
                }
  138    135   
                _ => {}
  139    136   
            }
  140    137   
            Ok(())
  141    138   
        })?;
  142    139   
        Ok(builder.build())
  143    140   
    }
  144    141   
}
         142  +
impl CancellationReason {
         143  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         144  +
    pub fn deserialize_with_response(
         145  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         146  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         147  +
        _status: u16,
         148  +
        _body: &[u8],
         149  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         150  +
        Self::deserialize(deserializer)
         151  +
    }
         152  +
}
  145    153   
impl CancellationReason {
  146    154   
    /// Creates a new builder-style object to manufacture [`CancellationReason`](crate::types::CancellationReason).
  147    155   
    pub fn builder() -> crate::types::builders::CancellationReasonBuilder {
  148    156   
        crate::types::builders::CancellationReasonBuilder::default()
  149    157   
    }
  150    158   
}
  151    159   
  152    160   
/// A builder for [`CancellationReason`](crate::types::CancellationReason).
  153    161   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  154    162   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_capacity.rs

@@ -3,3 +140,151 @@
   23     23   
    /// <p>The total number of capacity units consumed on a table or an index.</p>
   24     24   
    pub fn capacity_units(&self) -> ::std::option::Option<f64> {
   25     25   
        self.capacity_units
   26     26   
    }
   27     27   
}
   28     28   
static CAPACITY_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
   29     29   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Capacity", "com.amazonaws.dynamodb", "Capacity");
   30     30   
static CAPACITY_MEMBER_READ_CAPACITY_UNITS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   31     31   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Capacity$ReadCapacityUnits", "com.amazonaws.dynamodb", "Capacity"),
   32     32   
    ::aws_smithy_schema::ShapeType::Double,
   33         -
    "read_capacity_units",
          33  +
    "ReadCapacityUnits",
   34     34   
    0,
   35     35   
);
   36     36   
static CAPACITY_MEMBER_WRITE_CAPACITY_UNITS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   37     37   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Capacity$WriteCapacityUnits", "com.amazonaws.dynamodb", "Capacity"),
   38     38   
    ::aws_smithy_schema::ShapeType::Double,
   39         -
    "write_capacity_units",
          39  +
    "WriteCapacityUnits",
   40     40   
    1,
   41     41   
);
   42     42   
static CAPACITY_MEMBER_CAPACITY_UNITS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   43     43   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Capacity$CapacityUnits", "com.amazonaws.dynamodb", "Capacity"),
   44     44   
    ::aws_smithy_schema::ShapeType::Double,
   45         -
    "capacity_units",
          45  +
    "CapacityUnits",
   46     46   
    2,
   47     47   
);
   48     48   
static CAPACITY_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   49     49   
    CAPACITY_SCHEMA_ID,
   50     50   
    ::aws_smithy_schema::ShapeType::Structure,
   51     51   
    &[
   52     52   
        &CAPACITY_MEMBER_READ_CAPACITY_UNITS,
   53     53   
        &CAPACITY_MEMBER_WRITE_CAPACITY_UNITS,
   54     54   
        &CAPACITY_MEMBER_CAPACITY_UNITS,
   55     55   
    ],
   56     56   
);
   57     57   
impl Capacity {
   58     58   
    /// The schema for this shape.
   59     59   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &CAPACITY_SCHEMA;
   60     60   
}
   61     61   
impl ::aws_smithy_schema::serde::SerializableStruct for Capacity {
   62     62   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   63     63   
    fn serialize_members(
   64     64   
        &self,
   65     65   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   66     66   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   67     67   
        if let Some(ref val) = self.read_capacity_units {
   68     68   
            ser.write_double(&CAPACITY_MEMBER_READ_CAPACITY_UNITS, *val)?;
   69     69   
        }
   70     70   
        if let Some(ref val) = self.write_capacity_units {
   71     71   
            ser.write_double(&CAPACITY_MEMBER_WRITE_CAPACITY_UNITS, *val)?;
   72     72   
        }
   73     73   
        if let Some(ref val) = self.capacity_units {
   74     74   
            ser.write_double(&CAPACITY_MEMBER_CAPACITY_UNITS, *val)?;
   75     75   
        }
   76     76   
        Ok(())
   77     77   
    }
   78     78   
}
   79     79   
impl Capacity {
   80     80   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   81         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   82         -
        deserializer: &mut D,
          81  +
    pub fn deserialize(
          82  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   83     83   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   84     84   
        #[allow(unused_variables, unused_mut)]
   85     85   
        let mut builder = Self::builder();
   86     86   
        #[allow(
   87     87   
            unused_variables,
   88     88   
            unreachable_code,
   89     89   
            clippy::single_match,
   90     90   
            clippy::match_single_binding,
   91     91   
            clippy::diverging_sub_expression
   92     92   
        )]
   93         -
        deserializer.read_struct(&CAPACITY_SCHEMA, (), |_, member, deser| {
          93  +
        deserializer.read_struct(&CAPACITY_SCHEMA, &mut |member, deser| {
   94     94   
            match member.member_index() {
   95     95   
                Some(0) => {
   96     96   
                    builder.read_capacity_units = Some(deser.read_double(member)?);
   97     97   
                }
   98     98   
                Some(1) => {
   99     99   
                    builder.write_capacity_units = Some(deser.read_double(member)?);
  100    100   
                }
  101    101   
                Some(2) => {
  102    102   
                    builder.capacity_units = Some(deser.read_double(member)?);
  103    103   
                }
  104    104   
                _ => {}
  105    105   
            }
  106    106   
            Ok(())
  107    107   
        })?;
  108    108   
        Ok(builder.build())
  109    109   
    }
  110    110   
}
         111  +
impl Capacity {
         112  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         113  +
    pub fn deserialize_with_response(
         114  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         115  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         116  +
        _status: u16,
         117  +
        _body: &[u8],
         118  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         119  +
        Self::deserialize(deserializer)
         120  +
    }
         121  +
}
  111    122   
impl Capacity {
  112    123   
    /// Creates a new builder-style object to manufacture [`Capacity`](crate::types::Capacity).
  113    124   
    pub fn builder() -> crate::types::builders::CapacityBuilder {
  114    125   
        crate::types::builders::CapacityBuilder::default()
  115    126   
    }
  116    127   
}
  117    128   
  118    129   
/// A builder for [`Capacity`](crate::types::Capacity).
  119    130   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  120    131   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_condition.rs

@@ -129,129 +275,283 @@
  149    149   
}
  150    150   
static CONDITION_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
  151    151   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Condition", "com.amazonaws.dynamodb", "Condition");
  152    152   
static CONDITION_MEMBER_ATTRIBUTE_VALUE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  153    153   
    ::aws_smithy_schema::ShapeId::from_static(
  154    154   
        "com.amazonaws.dynamodb#Condition$AttributeValueList",
  155    155   
        "com.amazonaws.dynamodb",
  156    156   
        "Condition",
  157    157   
    ),
  158    158   
    ::aws_smithy_schema::ShapeType::List,
  159         -
    "attribute_value_list",
         159  +
    "AttributeValueList",
  160    160   
    0,
  161    161   
);
  162    162   
static CONDITION_MEMBER_COMPARISON_OPERATOR: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  163    163   
    ::aws_smithy_schema::ShapeId::from_static(
  164    164   
        "com.amazonaws.dynamodb#Condition$ComparisonOperator",
  165    165   
        "com.amazonaws.dynamodb",
  166    166   
        "Condition",
  167    167   
    ),
  168    168   
    ::aws_smithy_schema::ShapeType::String,
  169         -
    "comparison_operator",
         169  +
    "ComparisonOperator",
  170    170   
    1,
  171    171   
);
  172    172   
static CONDITION_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  173    173   
    CONDITION_SCHEMA_ID,
  174    174   
    ::aws_smithy_schema::ShapeType::Structure,
  175    175   
    &[&CONDITION_MEMBER_ATTRIBUTE_VALUE_LIST, &CONDITION_MEMBER_COMPARISON_OPERATOR],
  176    176   
);
  177    177   
impl Condition {
  178    178   
    /// The schema for this shape.
  179    179   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &CONDITION_SCHEMA;
  180    180   
}
  181    181   
impl ::aws_smithy_schema::serde::SerializableStruct for Condition {
  182    182   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  183    183   
    fn serialize_members(
  184    184   
        &self,
  185    185   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  186    186   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  187    187   
        if let Some(ref val) = self.attribute_value_list {
  188    188   
            ser.write_list(
  189    189   
                &CONDITION_MEMBER_ATTRIBUTE_VALUE_LIST,
  190    190   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  191    191   
                    for item in val {
  192         -
                        todo!("schema: unsupported list element type");
         192  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, item)?;
  193    193   
                    }
  194    194   
                    Ok(())
  195    195   
                },
  196    196   
            )?;
  197    197   
        }
  198    198   
        {
  199    199   
            let val = &self.comparison_operator;
  200    200   
            ser.write_string(&CONDITION_MEMBER_COMPARISON_OPERATOR, val.as_str())?;
  201    201   
        }
  202    202   
        Ok(())
  203    203   
    }
  204    204   
}
  205    205   
impl Condition {
  206    206   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  207         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  208         -
        deserializer: &mut D,
         207  +
    pub fn deserialize(
         208  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  209    209   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  210    210   
        #[allow(unused_variables, unused_mut)]
  211    211   
        let mut builder = Self::builder();
  212    212   
        #[allow(
  213    213   
            unused_variables,
  214    214   
            unreachable_code,
  215    215   
            clippy::single_match,
  216    216   
            clippy::match_single_binding,
  217    217   
            clippy::diverging_sub_expression
  218    218   
        )]
  219         -
        deserializer.read_struct(&CONDITION_SCHEMA, (), |_, member, deser| {
         219  +
        deserializer.read_struct(&CONDITION_SCHEMA, &mut |member, deser| {
  220    220   
            match member.member_index() {
  221    221   
                Some(0) => {
  222    222   
                    builder.attribute_value_list = Some({
  223         -
                        let container = if let Some(cap) = deser.container_size() {
  224         -
                            Vec::with_capacity(cap)
  225         -
                        } else {
  226         -
                            Vec::new()
  227         -
                        };
  228         -
                        deser.read_list(member, container, |mut list, deser| {
  229         -
                            list.push(todo!("deserialize nested aggregate"));
  230         -
                            Ok(list)
  231         -
                        })?
         223  +
                        let mut container = Vec::new();
         224  +
                        deser.read_list(member, &mut |deser| {
         225  +
                            container.push(crate::types::AttributeValue::deserialize(deser)?);
         226  +
                            Ok(())
         227  +
                        })?;
         228  +
                        container
  232    229   
                    });
  233    230   
                }
  234    231   
                Some(1) => {
  235    232   
                    builder.comparison_operator = Some(crate::types::ComparisonOperator::from(deser.read_string(member)?.as_str()));
  236    233   
                }
  237    234   
                _ => {}
  238    235   
            }
  239    236   
            Ok(())
  240    237   
        })?;
  241    238   
        builder
  242    239   
            .build()
  243    240   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  244    241   
    }
  245    242   
}
         243  +
impl Condition {
         244  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         245  +
    pub fn deserialize_with_response(
         246  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         247  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         248  +
        _status: u16,
         249  +
        _body: &[u8],
         250  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         251  +
        Self::deserialize(deserializer)
         252  +
    }
         253  +
}
  246    254   
impl Condition {
  247    255   
    /// Creates a new builder-style object to manufacture [`Condition`](crate::types::Condition).
  248    256   
    pub fn builder() -> crate::types::builders::ConditionBuilder {
  249    257   
        crate::types::builders::ConditionBuilder::default()
  250    258   
    }
  251    259   
}
  252    260   
  253    261   
/// A builder for [`Condition`](crate::types::Condition).
  254    262   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  255    263   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_condition_check.rs

@@ -25,25 +286,284 @@
   45     45   
    /// <p>Use <code>ReturnValuesOnConditionCheckFailure</code> to get the item attributes if the <code>ConditionCheck</code> condition fails. For <code>ReturnValuesOnConditionCheckFailure</code>, the valid values are: NONE and ALL_OLD.</p>
   46     46   
    pub fn return_values_on_condition_check_failure(&self) -> ::std::option::Option<&crate::types::ReturnValuesOnConditionCheckFailure> {
   47     47   
        self.return_values_on_condition_check_failure.as_ref()
   48     48   
    }
   49     49   
}
   50     50   
static CONDITIONCHECK_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
   51     51   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#ConditionCheck", "com.amazonaws.dynamodb", "ConditionCheck");
   52     52   
static CONDITIONCHECK_MEMBER_KEY: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   53     53   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#ConditionCheck$Key", "com.amazonaws.dynamodb", "ConditionCheck"),
   54     54   
    ::aws_smithy_schema::ShapeType::Map,
   55         -
    "key",
          55  +
    "Key",
   56     56   
    0,
   57     57   
);
   58     58   
static CONDITIONCHECK_MEMBER_TABLE_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   59     59   
    ::aws_smithy_schema::ShapeId::from_static(
   60     60   
        "com.amazonaws.dynamodb#ConditionCheck$TableName",
   61     61   
        "com.amazonaws.dynamodb",
   62     62   
        "ConditionCheck",
   63     63   
    ),
   64     64   
    ::aws_smithy_schema::ShapeType::String,
   65         -
    "table_name",
          65  +
    "TableName",
   66     66   
    1,
   67     67   
);
   68     68   
static CONDITIONCHECK_MEMBER_CONDITION_EXPRESSION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   69     69   
    ::aws_smithy_schema::ShapeId::from_static(
   70     70   
        "com.amazonaws.dynamodb#ConditionCheck$ConditionExpression",
   71     71   
        "com.amazonaws.dynamodb",
   72     72   
        "ConditionCheck",
   73     73   
    ),
   74     74   
    ::aws_smithy_schema::ShapeType::String,
   75         -
    "condition_expression",
          75  +
    "ConditionExpression",
   76     76   
    2,
   77     77   
);
   78     78   
static CONDITIONCHECK_MEMBER_EXPRESSION_ATTRIBUTE_NAMES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   79     79   
    ::aws_smithy_schema::ShapeId::from_static(
   80     80   
        "com.amazonaws.dynamodb#ConditionCheck$ExpressionAttributeNames",
   81     81   
        "com.amazonaws.dynamodb",
   82     82   
        "ConditionCheck",
   83     83   
    ),
   84     84   
    ::aws_smithy_schema::ShapeType::Map,
   85         -
    "expression_attribute_names",
          85  +
    "ExpressionAttributeNames",
   86     86   
    3,
   87     87   
);
   88     88   
static CONDITIONCHECK_MEMBER_EXPRESSION_ATTRIBUTE_VALUES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   89     89   
    ::aws_smithy_schema::ShapeId::from_static(
   90     90   
        "com.amazonaws.dynamodb#ConditionCheck$ExpressionAttributeValues",
   91     91   
        "com.amazonaws.dynamodb",
   92     92   
        "ConditionCheck",
   93     93   
    ),
   94     94   
    ::aws_smithy_schema::ShapeType::Map,
   95         -
    "expression_attribute_values",
          95  +
    "ExpressionAttributeValues",
   96     96   
    4,
   97     97   
);
   98     98   
static CONDITIONCHECK_MEMBER_RETURN_VALUES_ON_CONDITION_CHECK_FAILURE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   99     99   
    ::aws_smithy_schema::ShapeId::from_static(
  100    100   
        "com.amazonaws.dynamodb#ConditionCheck$ReturnValuesOnConditionCheckFailure",
  101    101   
        "com.amazonaws.dynamodb",
  102    102   
        "ConditionCheck",
  103    103   
    ),
  104    104   
    ::aws_smithy_schema::ShapeType::String,
  105         -
    "return_values_on_condition_check_failure",
         105  +
    "ReturnValuesOnConditionCheckFailure",
  106    106   
    5,
  107    107   
);
  108    108   
static CONDITIONCHECK_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  109    109   
    CONDITIONCHECK_SCHEMA_ID,
  110    110   
    ::aws_smithy_schema::ShapeType::Structure,
  111    111   
    &[
  112    112   
        &CONDITIONCHECK_MEMBER_KEY,
  113    113   
        &CONDITIONCHECK_MEMBER_TABLE_NAME,
  114    114   
        &CONDITIONCHECK_MEMBER_CONDITION_EXPRESSION,
  115    115   
        &CONDITIONCHECK_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
  116    116   
        &CONDITIONCHECK_MEMBER_EXPRESSION_ATTRIBUTE_VALUES,
  117    117   
        &CONDITIONCHECK_MEMBER_RETURN_VALUES_ON_CONDITION_CHECK_FAILURE,
  118    118   
    ],
  119    119   
);
  120    120   
impl ConditionCheck {
  121    121   
    /// The schema for this shape.
  122    122   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &CONDITIONCHECK_SCHEMA;
  123    123   
}
  124    124   
impl ::aws_smithy_schema::serde::SerializableStruct for ConditionCheck {
  125    125   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  126    126   
    fn serialize_members(
  127    127   
        &self,
  128    128   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  129    129   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  130    130   
        {
  131    131   
            let val = &self.key;
  132    132   
  133    133   
            ser.write_map(
  134    134   
                &CONDITIONCHECK_MEMBER_KEY,
  135    135   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  136    136   
                    for (key, value) in val {
  137    137   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  138         -
                        todo!("schema: unsupported map value type");
         138  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
  139    139   
                    }
  140    140   
                    Ok(())
  141    141   
                },
  142    142   
            )?;
  143    143   
        }
  144    144   
        {
  145    145   
            let val = &self.table_name;
  146    146   
            ser.write_string(&CONDITIONCHECK_MEMBER_TABLE_NAME, val)?;
  147    147   
        }
  148    148   
        {
  149    149   
            let val = &self.condition_expression;
  150    150   
            ser.write_string(&CONDITIONCHECK_MEMBER_CONDITION_EXPRESSION, val)?;
  151    151   
        }
  152    152   
        if let Some(ref val) = self.expression_attribute_names {
  153    153   
            ser.write_map(
  154    154   
                &CONDITIONCHECK_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
  155    155   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  156    156   
                    for (key, value) in val {
  157    157   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  158    158   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, value)?;
  159    159   
                    }
  160    160   
                    Ok(())
  161    161   
                },
  162    162   
            )?;
  163    163   
        }
  164    164   
        if let Some(ref val) = self.expression_attribute_values {
  165    165   
            ser.write_map(
  166    166   
                &CONDITIONCHECK_MEMBER_EXPRESSION_ATTRIBUTE_VALUES,
  167    167   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  168    168   
                    for (key, value) in val {
  169    169   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  170         -
                        todo!("schema: unsupported map value type");
         170  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
  171    171   
                    }
  172    172   
                    Ok(())
  173    173   
                },
  174    174   
            )?;
  175    175   
        }
  176    176   
        if let Some(ref val) = self.return_values_on_condition_check_failure {
  177    177   
            ser.write_string(&CONDITIONCHECK_MEMBER_RETURN_VALUES_ON_CONDITION_CHECK_FAILURE, val.as_str())?;
  178    178   
        }
  179    179   
        Ok(())
  180    180   
    }
  181    181   
}
  182    182   
impl ConditionCheck {
  183    183   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  184         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  185         -
        deserializer: &mut D,
         184  +
    pub fn deserialize(
         185  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  186    186   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  187    187   
        #[allow(unused_variables, unused_mut)]
  188    188   
        let mut builder = Self::builder();
  189    189   
        #[allow(
  190    190   
            unused_variables,
  191    191   
            unreachable_code,
  192    192   
            clippy::single_match,
  193    193   
            clippy::match_single_binding,
  194    194   
            clippy::diverging_sub_expression
  195    195   
        )]
  196         -
        deserializer.read_struct(&CONDITIONCHECK_SCHEMA, (), |_, member, deser| {
         196  +
        deserializer.read_struct(&CONDITIONCHECK_SCHEMA, &mut |member, deser| {
  197    197   
            match member.member_index() {
  198    198   
                Some(0) => {
  199    199   
                    builder.key = Some({
  200         -
                        let container = if let Some(cap) = deser.container_size() {
  201         -
                            std::collections::HashMap::with_capacity(cap)
  202         -
                        } else {
  203         -
                            std::collections::HashMap::new()
  204         -
                        };
  205         -
                        deser.read_map(member, container, |mut map, key, deser| {
  206         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  207         -
                            Ok(map)
  208         -
                        })?
         200  +
                        let mut container = std::collections::HashMap::new();
         201  +
                        deser.read_map(member, &mut |key, deser| {
         202  +
                            container.insert(key, crate::types::AttributeValue::deserialize(deser)?);
         203  +
                            Ok(())
         204  +
                        })?;
         205  +
                        container
  209    206   
                    });
  210    207   
                }
  211    208   
                Some(1) => {
  212    209   
                    builder.table_name = Some(deser.read_string(member)?);
  213    210   
                }
  214    211   
                Some(2) => {
  215    212   
                    builder.condition_expression = Some(deser.read_string(member)?);
  216    213   
                }
  217    214   
                Some(3) => {
  218         -
                    builder.expression_attribute_names = Some({
  219         -
                        let container = if let Some(cap) = deser.container_size() {
  220         -
                            std::collections::HashMap::with_capacity(cap)
  221         -
                        } else {
  222         -
                            std::collections::HashMap::new()
  223         -
                        };
  224         -
                        deser.read_map(member, container, |mut map, key, deser| {
  225         -
                            map.insert(key, deser.read_string(member)?);
  226         -
                            Ok(map)
  227         -
                        })?
  228         -
                    });
         215  +
                    builder.expression_attribute_names = Some(deser.read_string_string_map(member)?);
  229    216   
                }
  230    217   
                Some(4) => {
  231    218   
                    builder.expression_attribute_values = Some({
  232         -
                        let container = if let Some(cap) = deser.container_size() {
  233         -
                            std::collections::HashMap::with_capacity(cap)
  234         -
                        } else {
  235         -
                            std::collections::HashMap::new()
  236         -
                        };
  237         -
                        deser.read_map(member, container, |mut map, key, deser| {
  238         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  239         -
                            Ok(map)
  240         -
                        })?
         219  +
                        let mut container = std::collections::HashMap::new();
         220  +
                        deser.read_map(member, &mut |key, deser| {
         221  +
                            container.insert(key, crate::types::AttributeValue::deserialize(deser)?);
         222  +
                            Ok(())
         223  +
                        })?;
         224  +
                        container
  241    225   
                    });
  242    226   
                }
  243    227   
                Some(5) => {
  244    228   
                    builder.return_values_on_condition_check_failure = Some(crate::types::ReturnValuesOnConditionCheckFailure::from(
  245    229   
                        deser.read_string(member)?.as_str(),
  246    230   
                    ));
  247    231   
                }
  248    232   
                _ => {}
  249    233   
            }
  250    234   
            Ok(())
  251    235   
        })?;
         236  +
        builder.key = builder.key.or(Some(::std::collections::HashMap::new()));
         237  +
        builder.table_name = builder.table_name.or(Some(String::new()));
         238  +
        builder.condition_expression = builder.condition_expression.or(Some(String::new()));
  252    239   
        builder
  253    240   
            .build()
  254    241   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  255    242   
    }
  256    243   
}
         244  +
impl ConditionCheck {
         245  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         246  +
    pub fn deserialize_with_response(
         247  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         248  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         249  +
        _status: u16,
         250  +
        _body: &[u8],
         251  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         252  +
        Self::deserialize(deserializer)
         253  +
    }
         254  +
}
  257    255   
impl ConditionCheck {
  258    256   
    /// Creates a new builder-style object to manufacture [`ConditionCheck`](crate::types::ConditionCheck).
  259    257   
    pub fn builder() -> crate::types::builders::ConditionCheckBuilder {
  260    258   
        crate::types::builders::ConditionCheckBuilder::default()
  261    259   
    }
  262    260   
}
  263    261   
  264    262   
/// A builder for [`ConditionCheck`](crate::types::ConditionCheck).
  265    263   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  266    264   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_consumed_capacity.rs

@@ -31,31 +151,151 @@
   51     51   
}
   52     52   
static CONSUMEDCAPACITY_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
   53     53   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#ConsumedCapacity", "com.amazonaws.dynamodb", "ConsumedCapacity");
   54     54   
static CONSUMEDCAPACITY_MEMBER_TABLE_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   55     55   
    ::aws_smithy_schema::ShapeId::from_static(
   56     56   
        "com.amazonaws.dynamodb#ConsumedCapacity$TableName",
   57     57   
        "com.amazonaws.dynamodb",
   58     58   
        "ConsumedCapacity",
   59     59   
    ),
   60     60   
    ::aws_smithy_schema::ShapeType::String,
   61         -
    "table_name",
          61  +
    "TableName",
   62     62   
    0,
   63     63   
);
   64     64   
static CONSUMEDCAPACITY_MEMBER_CAPACITY_UNITS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   65     65   
    ::aws_smithy_schema::ShapeId::from_static(
   66     66   
        "com.amazonaws.dynamodb#ConsumedCapacity$CapacityUnits",
   67     67   
        "com.amazonaws.dynamodb",
   68     68   
        "ConsumedCapacity",
   69     69   
    ),
   70     70   
    ::aws_smithy_schema::ShapeType::Double,
   71         -
    "capacity_units",
          71  +
    "CapacityUnits",
   72     72   
    1,
   73     73   
);
   74     74   
static CONSUMEDCAPACITY_MEMBER_READ_CAPACITY_UNITS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   75     75   
    ::aws_smithy_schema::ShapeId::from_static(
   76     76   
        "com.amazonaws.dynamodb#ConsumedCapacity$ReadCapacityUnits",
   77     77   
        "com.amazonaws.dynamodb",
   78     78   
        "ConsumedCapacity",
   79     79   
    ),
   80     80   
    ::aws_smithy_schema::ShapeType::Double,
   81         -
    "read_capacity_units",
          81  +
    "ReadCapacityUnits",
   82     82   
    2,
   83     83   
);
   84     84   
static CONSUMEDCAPACITY_MEMBER_WRITE_CAPACITY_UNITS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   85     85   
    ::aws_smithy_schema::ShapeId::from_static(
   86     86   
        "com.amazonaws.dynamodb#ConsumedCapacity$WriteCapacityUnits",
   87     87   
        "com.amazonaws.dynamodb",
   88     88   
        "ConsumedCapacity",
   89     89   
    ),
   90     90   
    ::aws_smithy_schema::ShapeType::Double,
   91         -
    "write_capacity_units",
          91  +
    "WriteCapacityUnits",
   92     92   
    3,
   93     93   
);
   94     94   
static CONSUMEDCAPACITY_MEMBER_TABLE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   95     95   
    ::aws_smithy_schema::ShapeId::from_static(
   96     96   
        "com.amazonaws.dynamodb#ConsumedCapacity$Table",
   97     97   
        "com.amazonaws.dynamodb",
   98     98   
        "ConsumedCapacity",
   99     99   
    ),
  100    100   
    ::aws_smithy_schema::ShapeType::Structure,
  101         -
    "table",
         101  +
    "Table",
  102    102   
    4,
  103    103   
);
  104    104   
static CONSUMEDCAPACITY_MEMBER_LOCAL_SECONDARY_INDEXES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  105    105   
    ::aws_smithy_schema::ShapeId::from_static(
  106    106   
        "com.amazonaws.dynamodb#ConsumedCapacity$LocalSecondaryIndexes",
  107    107   
        "com.amazonaws.dynamodb",
  108    108   
        "ConsumedCapacity",
  109    109   
    ),
  110    110   
    ::aws_smithy_schema::ShapeType::Map,
  111         -
    "local_secondary_indexes",
         111  +
    "LocalSecondaryIndexes",
  112    112   
    5,
  113    113   
);
  114    114   
static CONSUMEDCAPACITY_MEMBER_GLOBAL_SECONDARY_INDEXES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  115    115   
    ::aws_smithy_schema::ShapeId::from_static(
  116    116   
        "com.amazonaws.dynamodb#ConsumedCapacity$GlobalSecondaryIndexes",
  117    117   
        "com.amazonaws.dynamodb",
  118    118   
        "ConsumedCapacity",
  119    119   
    ),
  120    120   
    ::aws_smithy_schema::ShapeType::Map,
  121         -
    "global_secondary_indexes",
         121  +
    "GlobalSecondaryIndexes",
  122    122   
    6,
  123    123   
);
  124    124   
static CONSUMEDCAPACITY_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  125    125   
    CONSUMEDCAPACITY_SCHEMA_ID,
  126    126   
    ::aws_smithy_schema::ShapeType::Structure,
  127    127   
    &[
  128    128   
        &CONSUMEDCAPACITY_MEMBER_TABLE_NAME,
  129    129   
        &CONSUMEDCAPACITY_MEMBER_CAPACITY_UNITS,
  130    130   
        &CONSUMEDCAPACITY_MEMBER_READ_CAPACITY_UNITS,
  131    131   
        &CONSUMEDCAPACITY_MEMBER_WRITE_CAPACITY_UNITS,
@@ -161,161 +282,287 @@
  181    181   
                    }
  182    182   
                    Ok(())
  183    183   
                },
  184    184   
            )?;
  185    185   
        }
  186    186   
        Ok(())
  187    187   
    }
  188    188   
}
  189    189   
impl ConsumedCapacity {
  190    190   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  191         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  192         -
        deserializer: &mut D,
         191  +
    pub fn deserialize(
         192  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  193    193   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  194    194   
        #[allow(unused_variables, unused_mut)]
  195    195   
        let mut builder = Self::builder();
  196    196   
        #[allow(
  197    197   
            unused_variables,
  198    198   
            unreachable_code,
  199    199   
            clippy::single_match,
  200    200   
            clippy::match_single_binding,
  201    201   
            clippy::diverging_sub_expression
  202    202   
        )]
  203         -
        deserializer.read_struct(&CONSUMEDCAPACITY_SCHEMA, (), |_, member, deser| {
         203  +
        deserializer.read_struct(&CONSUMEDCAPACITY_SCHEMA, &mut |member, deser| {
  204    204   
            match member.member_index() {
  205    205   
                Some(0) => {
  206    206   
                    builder.table_name = Some(deser.read_string(member)?);
  207    207   
                }
  208    208   
                Some(1) => {
  209    209   
                    builder.capacity_units = Some(deser.read_double(member)?);
  210    210   
                }
  211    211   
                Some(2) => {
  212    212   
                    builder.read_capacity_units = Some(deser.read_double(member)?);
  213    213   
                }
  214    214   
                Some(3) => {
  215    215   
                    builder.write_capacity_units = Some(deser.read_double(member)?);
  216    216   
                }
  217    217   
                Some(4) => {
  218    218   
                    builder.table = Some(crate::types::Capacity::deserialize(deser)?);
  219    219   
                }
  220    220   
                Some(5) => {
  221    221   
                    builder.local_secondary_indexes = Some({
  222         -
                        let container = if let Some(cap) = deser.container_size() {
  223         -
                            std::collections::HashMap::with_capacity(cap)
  224         -
                        } else {
  225         -
                            std::collections::HashMap::new()
  226         -
                        };
  227         -
                        deser.read_map(member, container, |mut map, key, deser| {
  228         -
                            map.insert(key, crate::types::Capacity::deserialize(deser)?);
  229         -
                            Ok(map)
  230         -
                        })?
         222  +
                        let mut container = std::collections::HashMap::new();
         223  +
                        deser.read_map(member, &mut |key, deser| {
         224  +
                            container.insert(key, crate::types::Capacity::deserialize(deser)?);
         225  +
                            Ok(())
         226  +
                        })?;
         227  +
                        container
  231    228   
                    });
  232    229   
                }
  233    230   
                Some(6) => {
  234    231   
                    builder.global_secondary_indexes = Some({
  235         -
                        let container = if let Some(cap) = deser.container_size() {
  236         -
                            std::collections::HashMap::with_capacity(cap)
  237         -
                        } else {
  238         -
                            std::collections::HashMap::new()
  239         -
                        };
  240         -
                        deser.read_map(member, container, |mut map, key, deser| {
  241         -
                            map.insert(key, crate::types::Capacity::deserialize(deser)?);
  242         -
                            Ok(map)
  243         -
                        })?
         232  +
                        let mut container = std::collections::HashMap::new();
         233  +
                        deser.read_map(member, &mut |key, deser| {
         234  +
                            container.insert(key, crate::types::Capacity::deserialize(deser)?);
         235  +
                            Ok(())
         236  +
                        })?;
         237  +
                        container
  244    238   
                    });
  245    239   
                }
  246    240   
                _ => {}
  247    241   
            }
  248    242   
            Ok(())
  249    243   
        })?;
  250    244   
        Ok(builder.build())
  251    245   
    }
  252    246   
}
         247  +
impl ConsumedCapacity {
         248  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         249  +
    pub fn deserialize_with_response(
         250  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         251  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         252  +
        _status: u16,
         253  +
        _body: &[u8],
         254  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         255  +
        Self::deserialize(deserializer)
         256  +
    }
         257  +
}
  253    258   
impl ConsumedCapacity {
  254    259   
    /// Creates a new builder-style object to manufacture [`ConsumedCapacity`](crate::types::ConsumedCapacity).
  255    260   
    pub fn builder() -> crate::types::builders::ConsumedCapacityBuilder {
  256    261   
        crate::types::builders::ConsumedCapacityBuilder::default()
  257    262   
    }
  258    263   
}
  259    264   
  260    265   
/// A builder for [`ConsumedCapacity`](crate::types::ConsumedCapacity).
  261    266   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  262    267   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_continuous_backups_description.rs

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

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_contributor_insights_summary.rs

@@ -10,10 +155,166 @@
   30     30   
    "com.amazonaws.dynamodb",
   31     31   
    "ContributorInsightsSummary",
   32     32   
);
   33     33   
static CONTRIBUTORINSIGHTSSUMMARY_MEMBER_TABLE_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   34     34   
    ::aws_smithy_schema::ShapeId::from_static(
   35     35   
        "com.amazonaws.dynamodb#ContributorInsightsSummary$TableName",
   36     36   
        "com.amazonaws.dynamodb",
   37     37   
        "ContributorInsightsSummary",
   38     38   
    ),
   39     39   
    ::aws_smithy_schema::ShapeType::String,
   40         -
    "table_name",
          40  +
    "TableName",
   41     41   
    0,
   42     42   
);
   43     43   
static CONTRIBUTORINSIGHTSSUMMARY_MEMBER_INDEX_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   44     44   
    ::aws_smithy_schema::ShapeId::from_static(
   45     45   
        "com.amazonaws.dynamodb#ContributorInsightsSummary$IndexName",
   46     46   
        "com.amazonaws.dynamodb",
   47     47   
        "ContributorInsightsSummary",
   48     48   
    ),
   49     49   
    ::aws_smithy_schema::ShapeType::String,
   50         -
    "index_name",
          50  +
    "IndexName",
   51     51   
    1,
   52     52   
);
   53     53   
static CONTRIBUTORINSIGHTSSUMMARY_MEMBER_CONTRIBUTOR_INSIGHTS_STATUS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   54     54   
    ::aws_smithy_schema::ShapeId::from_static(
   55     55   
        "com.amazonaws.dynamodb#ContributorInsightsSummary$ContributorInsightsStatus",
   56     56   
        "com.amazonaws.dynamodb",
   57     57   
        "ContributorInsightsSummary",
   58     58   
    ),
   59     59   
    ::aws_smithy_schema::ShapeType::String,
   60         -
    "contributor_insights_status",
          60  +
    "ContributorInsightsStatus",
   61     61   
    2,
   62     62   
);
   63     63   
static CONTRIBUTORINSIGHTSSUMMARY_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   64     64   
    CONTRIBUTORINSIGHTSSUMMARY_SCHEMA_ID,
   65     65   
    ::aws_smithy_schema::ShapeType::Structure,
   66     66   
    &[
   67     67   
        &CONTRIBUTORINSIGHTSSUMMARY_MEMBER_TABLE_NAME,
   68     68   
        &CONTRIBUTORINSIGHTSSUMMARY_MEMBER_INDEX_NAME,
   69     69   
        &CONTRIBUTORINSIGHTSSUMMARY_MEMBER_CONTRIBUTOR_INSIGHTS_STATUS,
   70     70   
    ],
   71     71   
);
   72     72   
impl ContributorInsightsSummary {
   73     73   
    /// The schema for this shape.
   74     74   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &CONTRIBUTORINSIGHTSSUMMARY_SCHEMA;
   75     75   
}
   76     76   
impl ::aws_smithy_schema::serde::SerializableStruct for ContributorInsightsSummary {
   77     77   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   78     78   
    fn serialize_members(
   79     79   
        &self,
   80     80   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   81     81   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   82     82   
        if let Some(ref val) = self.table_name {
   83     83   
            ser.write_string(&CONTRIBUTORINSIGHTSSUMMARY_MEMBER_TABLE_NAME, val)?;
   84     84   
        }
   85     85   
        if let Some(ref val) = self.index_name {
   86     86   
            ser.write_string(&CONTRIBUTORINSIGHTSSUMMARY_MEMBER_INDEX_NAME, val)?;
   87     87   
        }
   88     88   
        if let Some(ref val) = self.contributor_insights_status {
   89     89   
            ser.write_string(&CONTRIBUTORINSIGHTSSUMMARY_MEMBER_CONTRIBUTOR_INSIGHTS_STATUS, val.as_str())?;
   90     90   
        }
   91     91   
        Ok(())
   92     92   
    }
   93     93   
}
   94     94   
impl ContributorInsightsSummary {
   95     95   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   96         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   97         -
        deserializer: &mut D,
          96  +
    pub fn deserialize(
          97  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   98     98   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   99     99   
        #[allow(unused_variables, unused_mut)]
  100    100   
        let mut builder = Self::builder();
  101    101   
        #[allow(
  102    102   
            unused_variables,
  103    103   
            unreachable_code,
  104    104   
            clippy::single_match,
  105    105   
            clippy::match_single_binding,
  106    106   
            clippy::diverging_sub_expression
  107    107   
        )]
  108         -
        deserializer.read_struct(&CONTRIBUTORINSIGHTSSUMMARY_SCHEMA, (), |_, member, deser| {
         108  +
        deserializer.read_struct(&CONTRIBUTORINSIGHTSSUMMARY_SCHEMA, &mut |member, deser| {
  109    109   
            match member.member_index() {
  110    110   
                Some(0) => {
  111    111   
                    builder.table_name = Some(deser.read_string(member)?);
  112    112   
                }
  113    113   
                Some(1) => {
  114    114   
                    builder.index_name = Some(deser.read_string(member)?);
  115    115   
                }
  116    116   
                Some(2) => {
  117    117   
                    builder.contributor_insights_status = Some(crate::types::ContributorInsightsStatus::from(deser.read_string(member)?.as_str()));
  118    118   
                }
  119    119   
                _ => {}
  120    120   
            }
  121    121   
            Ok(())
  122    122   
        })?;
  123    123   
        Ok(builder.build())
  124    124   
    }
  125    125   
}
         126  +
impl ContributorInsightsSummary {
         127  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         128  +
    pub fn deserialize_with_response(
         129  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         130  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         131  +
        _status: u16,
         132  +
        _body: &[u8],
         133  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         134  +
        Self::deserialize(deserializer)
         135  +
    }
         136  +
}
  126    137   
impl ContributorInsightsSummary {
  127    138   
    /// Creates a new builder-style object to manufacture [`ContributorInsightsSummary`](crate::types::ContributorInsightsSummary).
  128    139   
    pub fn builder() -> crate::types::builders::ContributorInsightsSummaryBuilder {
  129    140   
        crate::types::builders::ContributorInsightsSummaryBuilder::default()
  130    141   
    }
  131    142   
}
  132    143   
  133    144   
/// A builder for [`ContributorInsightsSummary`](crate::types::ContributorInsightsSummary).
  134    145   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  135    146   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_create_global_secondary_index_action.rs

@@ -20,20 +206,216 @@
   40     40   
    "com.amazonaws.dynamodb",
   41     41   
    "CreateGlobalSecondaryIndexAction",
   42     42   
);
   43     43   
static CREATEGLOBALSECONDARYINDEXACTION_MEMBER_INDEX_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   44     44   
    ::aws_smithy_schema::ShapeId::from_static(
   45     45   
        "com.amazonaws.dynamodb#CreateGlobalSecondaryIndexAction$IndexName",
   46     46   
        "com.amazonaws.dynamodb",
   47     47   
        "CreateGlobalSecondaryIndexAction",
   48     48   
    ),
   49     49   
    ::aws_smithy_schema::ShapeType::String,
   50         -
    "index_name",
          50  +
    "IndexName",
   51     51   
    0,
   52     52   
);
   53     53   
static CREATEGLOBALSECONDARYINDEXACTION_MEMBER_KEY_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   54     54   
    ::aws_smithy_schema::ShapeId::from_static(
   55     55   
        "com.amazonaws.dynamodb#CreateGlobalSecondaryIndexAction$KeySchema",
   56     56   
        "com.amazonaws.dynamodb",
   57     57   
        "CreateGlobalSecondaryIndexAction",
   58     58   
    ),
   59     59   
    ::aws_smithy_schema::ShapeType::List,
   60         -
    "key_schema",
          60  +
    "KeySchema",
   61     61   
    1,
   62     62   
);
   63     63   
static CREATEGLOBALSECONDARYINDEXACTION_MEMBER_PROJECTION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   64     64   
    ::aws_smithy_schema::ShapeId::from_static(
   65     65   
        "com.amazonaws.dynamodb#CreateGlobalSecondaryIndexAction$Projection",
   66     66   
        "com.amazonaws.dynamodb",
   67     67   
        "CreateGlobalSecondaryIndexAction",
   68     68   
    ),
   69     69   
    ::aws_smithy_schema::ShapeType::Structure,
   70         -
    "projection",
          70  +
    "Projection",
   71     71   
    2,
   72     72   
);
   73     73   
static CREATEGLOBALSECONDARYINDEXACTION_MEMBER_PROVISIONED_THROUGHPUT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   74     74   
    ::aws_smithy_schema::ShapeId::from_static(
   75     75   
        "com.amazonaws.dynamodb#CreateGlobalSecondaryIndexAction$ProvisionedThroughput",
   76     76   
        "com.amazonaws.dynamodb",
   77     77   
        "CreateGlobalSecondaryIndexAction",
   78     78   
    ),
   79     79   
    ::aws_smithy_schema::ShapeType::Structure,
   80         -
    "provisioned_throughput",
          80  +
    "ProvisionedThroughput",
   81     81   
    3,
   82     82   
);
   83     83   
static CREATEGLOBALSECONDARYINDEXACTION_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   84     84   
    CREATEGLOBALSECONDARYINDEXACTION_SCHEMA_ID,
   85     85   
    ::aws_smithy_schema::ShapeType::Structure,
   86     86   
    &[
   87     87   
        &CREATEGLOBALSECONDARYINDEXACTION_MEMBER_INDEX_NAME,
   88     88   
        &CREATEGLOBALSECONDARYINDEXACTION_MEMBER_KEY_SCHEMA,
   89     89   
        &CREATEGLOBALSECONDARYINDEXACTION_MEMBER_PROJECTION,
   90     90   
        &CREATEGLOBALSECONDARYINDEXACTION_MEMBER_PROVISIONED_THROUGHPUT,
   91     91   
    ],
   92     92   
);
   93     93   
impl CreateGlobalSecondaryIndexAction {
   94     94   
    /// The schema for this shape.
   95     95   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &CREATEGLOBALSECONDARYINDEXACTION_SCHEMA;
   96     96   
}
   97     97   
impl ::aws_smithy_schema::serde::SerializableStruct for CreateGlobalSecondaryIndexAction {
   98     98   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   99     99   
    fn serialize_members(
  100    100   
        &self,
  101    101   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  102    102   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  103    103   
        {
  104    104   
            let val = &self.index_name;
  105    105   
            ser.write_string(&CREATEGLOBALSECONDARYINDEXACTION_MEMBER_INDEX_NAME, val)?;
  106    106   
        }
  107    107   
        {
  108    108   
            let val = &self.key_schema;
  109    109   
  110    110   
            ser.write_list(
  111    111   
                &CREATEGLOBALSECONDARYINDEXACTION_MEMBER_KEY_SCHEMA,
  112    112   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  113    113   
                    for item in val {
  114    114   
                        ser.write_struct(crate::types::KeySchemaElement::SCHEMA, item)?;
  115    115   
                    }
  116    116   
                    Ok(())
  117    117   
                },
  118    118   
            )?;
  119    119   
        }
  120    120   
        {
  121    121   
            let val = &self.projection;
  122    122   
            ser.write_struct(&CREATEGLOBALSECONDARYINDEXACTION_MEMBER_PROJECTION, val)?;
  123    123   
        }
  124    124   
        if let Some(ref val) = self.provisioned_throughput {
  125    125   
            ser.write_struct(&CREATEGLOBALSECONDARYINDEXACTION_MEMBER_PROVISIONED_THROUGHPUT, val)?;
  126    126   
        }
  127    127   
        Ok(())
  128    128   
    }
  129    129   
}
  130    130   
impl CreateGlobalSecondaryIndexAction {
  131    131   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  132         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  133         -
        deserializer: &mut D,
         132  +
    pub fn deserialize(
         133  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  134    134   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  135    135   
        #[allow(unused_variables, unused_mut)]
  136    136   
        let mut builder = Self::builder();
  137    137   
        #[allow(
  138    138   
            unused_variables,
  139    139   
            unreachable_code,
  140    140   
            clippy::single_match,
  141    141   
            clippy::match_single_binding,
  142    142   
            clippy::diverging_sub_expression
  143    143   
        )]
  144         -
        deserializer.read_struct(&CREATEGLOBALSECONDARYINDEXACTION_SCHEMA, (), |_, member, deser| {
         144  +
        deserializer.read_struct(&CREATEGLOBALSECONDARYINDEXACTION_SCHEMA, &mut |member, deser| {
  145    145   
            match member.member_index() {
  146    146   
                Some(0) => {
  147    147   
                    builder.index_name = Some(deser.read_string(member)?);
  148    148   
                }
  149    149   
                Some(1) => {
  150    150   
                    builder.key_schema = Some({
  151         -
                        let container = if let Some(cap) = deser.container_size() {
  152         -
                            Vec::with_capacity(cap)
  153         -
                        } else {
  154         -
                            Vec::new()
  155         -
                        };
  156         -
                        deser.read_list(member, container, |mut list, deser| {
  157         -
                            list.push(crate::types::KeySchemaElement::deserialize(deser)?);
  158         -
                            Ok(list)
  159         -
                        })?
         151  +
                        let mut container = Vec::new();
         152  +
                        deser.read_list(member, &mut |deser| {
         153  +
                            container.push(crate::types::KeySchemaElement::deserialize(deser)?);
         154  +
                            Ok(())
         155  +
                        })?;
         156  +
                        container
  160    157   
                    });
  161    158   
                }
  162    159   
                Some(2) => {
  163    160   
                    builder.projection = Some(crate::types::Projection::deserialize(deser)?);
  164    161   
                }
  165    162   
                Some(3) => {
  166    163   
                    builder.provisioned_throughput = Some(crate::types::ProvisionedThroughput::deserialize(deser)?);
  167    164   
                }
  168    165   
                _ => {}
  169    166   
            }
  170    167   
            Ok(())
  171    168   
        })?;
         169  +
        builder.index_name = builder.index_name.or(Some(String::new()));
         170  +
        builder.key_schema = builder.key_schema.or(Some(Vec::new()));
  172    171   
        builder
  173    172   
            .build()
  174    173   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  175    174   
    }
  176    175   
}
         176  +
impl CreateGlobalSecondaryIndexAction {
         177  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         178  +
    pub fn deserialize_with_response(
         179  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         180  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         181  +
        _status: u16,
         182  +
        _body: &[u8],
         183  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         184  +
        Self::deserialize(deserializer)
         185  +
    }
         186  +
}
  177    187   
impl CreateGlobalSecondaryIndexAction {
  178    188   
    /// Creates a new builder-style object to manufacture [`CreateGlobalSecondaryIndexAction`](crate::types::CreateGlobalSecondaryIndexAction).
  179    189   
    pub fn builder() -> crate::types::builders::CreateGlobalSecondaryIndexActionBuilder {
  180    190   
        crate::types::builders::CreateGlobalSecondaryIndexActionBuilder::default()
  181    191   
    }
  182    192   
}
  183    193   
  184    194   
/// A builder for [`CreateGlobalSecondaryIndexAction`](crate::types::CreateGlobalSecondaryIndexAction).
  185    195   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  186    196   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_create_replica_action.rs

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

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_create_replication_group_member_action.rs

@@ -19,19 +203,212 @@
   39     39   
    "com.amazonaws.dynamodb",
   40     40   
    "CreateReplicationGroupMemberAction",
   41     41   
);
   42     42   
static CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_REGION_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   43     43   
    ::aws_smithy_schema::ShapeId::from_static(
   44     44   
        "com.amazonaws.dynamodb#CreateReplicationGroupMemberAction$RegionName",
   45     45   
        "com.amazonaws.dynamodb",
   46     46   
        "CreateReplicationGroupMemberAction",
   47     47   
    ),
   48     48   
    ::aws_smithy_schema::ShapeType::String,
   49         -
    "region_name",
          49  +
    "RegionName",
   50     50   
    0,
   51     51   
);
   52     52   
static CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_KMS_MASTER_KEY_ID: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   53     53   
    ::aws_smithy_schema::ShapeId::from_static(
   54     54   
        "com.amazonaws.dynamodb#CreateReplicationGroupMemberAction$KMSMasterKeyId",
   55     55   
        "com.amazonaws.dynamodb",
   56     56   
        "CreateReplicationGroupMemberAction",
   57     57   
    ),
   58     58   
    ::aws_smithy_schema::ShapeType::String,
   59         -
    "kms_master_key_id",
          59  +
    "KMSMasterKeyId",
   60     60   
    1,
   61     61   
);
   62     62   
static CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_PROVISIONED_THROUGHPUT_OVERRIDE: ::aws_smithy_schema::Schema =
   63     63   
    ::aws_smithy_schema::Schema::new_member(
   64     64   
        ::aws_smithy_schema::ShapeId::from_static(
   65     65   
            "com.amazonaws.dynamodb#CreateReplicationGroupMemberAction$ProvisionedThroughputOverride",
   66     66   
            "com.amazonaws.dynamodb",
   67     67   
            "CreateReplicationGroupMemberAction",
   68     68   
        ),
   69     69   
        ::aws_smithy_schema::ShapeType::Structure,
   70         -
        "provisioned_throughput_override",
          70  +
        "ProvisionedThroughputOverride",
   71     71   
        2,
   72     72   
    );
   73     73   
static CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_GLOBAL_SECONDARY_INDEXES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   74     74   
    ::aws_smithy_schema::ShapeId::from_static(
   75     75   
        "com.amazonaws.dynamodb#CreateReplicationGroupMemberAction$GlobalSecondaryIndexes",
   76     76   
        "com.amazonaws.dynamodb",
   77     77   
        "CreateReplicationGroupMemberAction",
   78     78   
    ),
   79     79   
    ::aws_smithy_schema::ShapeType::List,
   80         -
    "global_secondary_indexes",
          80  +
    "GlobalSecondaryIndexes",
   81     81   
    3,
   82     82   
);
   83     83   
static CREATEREPLICATIONGROUPMEMBERACTION_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   84     84   
    CREATEREPLICATIONGROUPMEMBERACTION_SCHEMA_ID,
   85     85   
    ::aws_smithy_schema::ShapeType::Structure,
   86     86   
    &[
   87     87   
        &CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_REGION_NAME,
   88     88   
        &CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_KMS_MASTER_KEY_ID,
   89     89   
        &CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_PROVISIONED_THROUGHPUT_OVERRIDE,
   90     90   
        &CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_GLOBAL_SECONDARY_INDEXES,
   91     91   
    ],
   92     92   
);
   93     93   
impl CreateReplicationGroupMemberAction {
   94     94   
    /// The schema for this shape.
   95     95   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &CREATEREPLICATIONGROUPMEMBERACTION_SCHEMA;
   96     96   
}
   97     97   
impl ::aws_smithy_schema::serde::SerializableStruct for CreateReplicationGroupMemberAction {
   98     98   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   99     99   
    fn serialize_members(
  100    100   
        &self,
  101    101   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  102    102   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  103    103   
        {
  104    104   
            let val = &self.region_name;
  105    105   
            ser.write_string(&CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_REGION_NAME, val)?;
  106    106   
        }
  107    107   
        if let Some(ref val) = self.kms_master_key_id {
  108    108   
            ser.write_string(&CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_KMS_MASTER_KEY_ID, val)?;
  109    109   
        }
  110    110   
        if let Some(ref val) = self.provisioned_throughput_override {
  111    111   
            ser.write_struct(&CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_PROVISIONED_THROUGHPUT_OVERRIDE, val)?;
  112    112   
        }
  113    113   
        if let Some(ref val) = self.global_secondary_indexes {
  114    114   
            ser.write_list(
  115    115   
                &CREATEREPLICATIONGROUPMEMBERACTION_MEMBER_GLOBAL_SECONDARY_INDEXES,
  116    116   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  117    117   
                    for item in val {
  118    118   
                        ser.write_struct(crate::types::ReplicaGlobalSecondaryIndex::SCHEMA, item)?;
  119    119   
                    }
  120    120   
                    Ok(())
  121    121   
                },
  122    122   
            )?;
  123    123   
        }
  124    124   
        Ok(())
  125    125   
    }
  126    126   
}
  127    127   
impl CreateReplicationGroupMemberAction {
  128    128   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  129         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  130         -
        deserializer: &mut D,
         129  +
    pub fn deserialize(
         130  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  131    131   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  132    132   
        #[allow(unused_variables, unused_mut)]
  133    133   
        let mut builder = Self::builder();
  134    134   
        #[allow(
  135    135   
            unused_variables,
  136    136   
            unreachable_code,
  137    137   
            clippy::single_match,
  138    138   
            clippy::match_single_binding,
  139    139   
            clippy::diverging_sub_expression
  140    140   
        )]
  141         -
        deserializer.read_struct(&CREATEREPLICATIONGROUPMEMBERACTION_SCHEMA, (), |_, member, deser| {
         141  +
        deserializer.read_struct(&CREATEREPLICATIONGROUPMEMBERACTION_SCHEMA, &mut |member, deser| {
  142    142   
            match member.member_index() {
  143    143   
                Some(0) => {
  144    144   
                    builder.region_name = Some(deser.read_string(member)?);
  145    145   
                }
  146    146   
                Some(1) => {
  147    147   
                    builder.kms_master_key_id = Some(deser.read_string(member)?);
  148    148   
                }
  149    149   
                Some(2) => {
  150    150   
                    builder.provisioned_throughput_override = Some(crate::types::ProvisionedThroughputOverride::deserialize(deser)?);
  151    151   
                }
  152    152   
                Some(3) => {
  153    153   
                    builder.global_secondary_indexes = Some({
  154         -
                        let container = if let Some(cap) = deser.container_size() {
  155         -
                            Vec::with_capacity(cap)
  156         -
                        } else {
  157         -
                            Vec::new()
  158         -
                        };
  159         -
                        deser.read_list(member, container, |mut list, deser| {
  160         -
                            list.push(crate::types::ReplicaGlobalSecondaryIndex::deserialize(deser)?);
  161         -
                            Ok(list)
  162         -
                        })?
         154  +
                        let mut container = Vec::new();
         155  +
                        deser.read_list(member, &mut |deser| {
         156  +
                            container.push(crate::types::ReplicaGlobalSecondaryIndex::deserialize(deser)?);
         157  +
                            Ok(())
         158  +
                        })?;
         159  +
                        container
  163    160   
                    });
  164    161   
                }
  165    162   
                _ => {}
  166    163   
            }
  167    164   
            Ok(())
  168    165   
        })?;
         166  +
        builder.region_name = builder.region_name.or(Some(String::new()));
  169    167   
        builder
  170    168   
            .build()
  171    169   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  172    170   
    }
  173    171   
}
         172  +
impl CreateReplicationGroupMemberAction {
         173  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         174  +
    pub fn deserialize_with_response(
         175  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         176  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         177  +
        _status: u16,
         178  +
        _body: &[u8],
         179  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         180  +
        Self::deserialize(deserializer)
         181  +
    }
         182  +
}
  174    183   
impl CreateReplicationGroupMemberAction {
  175    184   
    /// Creates a new builder-style object to manufacture [`CreateReplicationGroupMemberAction`](crate::types::CreateReplicationGroupMemberAction).
  176    185   
    pub fn builder() -> crate::types::builders::CreateReplicationGroupMemberActionBuilder {
  177    186   
        crate::types::builders::CreateReplicationGroupMemberActionBuilder::default()
  178    187   
    }
  179    188   
}
  180    189   
  181    190   
/// A builder for [`CreateReplicationGroupMemberAction`](crate::types::CreateReplicationGroupMemberAction).
  182    191   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  183    192   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_delete.rs

@@ -24,24 +273,270 @@
   44     44   
    /// <p>Use <code>ReturnValuesOnConditionCheckFailure</code> to get the item attributes if the <code>Delete</code> condition fails. For <code>ReturnValuesOnConditionCheckFailure</code>, the valid values are: NONE and ALL_OLD.</p>
   45     45   
    pub fn return_values_on_condition_check_failure(&self) -> ::std::option::Option<&crate::types::ReturnValuesOnConditionCheckFailure> {
   46     46   
        self.return_values_on_condition_check_failure.as_ref()
   47     47   
    }
   48     48   
}
   49     49   
static DELETE_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
   50     50   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Delete", "com.amazonaws.dynamodb", "Delete");
   51     51   
static DELETE_MEMBER_KEY: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   52     52   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Delete$Key", "com.amazonaws.dynamodb", "Delete"),
   53     53   
    ::aws_smithy_schema::ShapeType::Map,
   54         -
    "key",
          54  +
    "Key",
   55     55   
    0,
   56     56   
);
   57     57   
static DELETE_MEMBER_TABLE_NAME: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   58     58   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Delete$TableName", "com.amazonaws.dynamodb", "Delete"),
   59     59   
    ::aws_smithy_schema::ShapeType::String,
   60         -
    "table_name",
          60  +
    "TableName",
   61     61   
    1,
   62     62   
);
   63     63   
static DELETE_MEMBER_CONDITION_EXPRESSION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   64     64   
    ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#Delete$ConditionExpression", "com.amazonaws.dynamodb", "Delete"),
   65     65   
    ::aws_smithy_schema::ShapeType::String,
   66         -
    "condition_expression",
          66  +
    "ConditionExpression",
   67     67   
    2,
   68     68   
);
   69     69   
static DELETE_MEMBER_EXPRESSION_ATTRIBUTE_NAMES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   70     70   
    ::aws_smithy_schema::ShapeId::from_static(
   71     71   
        "com.amazonaws.dynamodb#Delete$ExpressionAttributeNames",
   72     72   
        "com.amazonaws.dynamodb",
   73     73   
        "Delete",
   74     74   
    ),
   75     75   
    ::aws_smithy_schema::ShapeType::Map,
   76         -
    "expression_attribute_names",
          76  +
    "ExpressionAttributeNames",
   77     77   
    3,
   78     78   
);
   79     79   
static DELETE_MEMBER_EXPRESSION_ATTRIBUTE_VALUES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   80     80   
    ::aws_smithy_schema::ShapeId::from_static(
   81     81   
        "com.amazonaws.dynamodb#Delete$ExpressionAttributeValues",
   82     82   
        "com.amazonaws.dynamodb",
   83     83   
        "Delete",
   84     84   
    ),
   85     85   
    ::aws_smithy_schema::ShapeType::Map,
   86         -
    "expression_attribute_values",
          86  +
    "ExpressionAttributeValues",
   87     87   
    4,
   88     88   
);
   89     89   
static DELETE_MEMBER_RETURN_VALUES_ON_CONDITION_CHECK_FAILURE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   90     90   
    ::aws_smithy_schema::ShapeId::from_static(
   91     91   
        "com.amazonaws.dynamodb#Delete$ReturnValuesOnConditionCheckFailure",
   92     92   
        "com.amazonaws.dynamodb",
   93     93   
        "Delete",
   94     94   
    ),
   95     95   
    ::aws_smithy_schema::ShapeType::String,
   96         -
    "return_values_on_condition_check_failure",
          96  +
    "ReturnValuesOnConditionCheckFailure",
   97     97   
    5,
   98     98   
);
   99     99   
static DELETE_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  100    100   
    DELETE_SCHEMA_ID,
  101    101   
    ::aws_smithy_schema::ShapeType::Structure,
  102    102   
    &[
  103    103   
        &DELETE_MEMBER_KEY,
  104    104   
        &DELETE_MEMBER_TABLE_NAME,
  105    105   
        &DELETE_MEMBER_CONDITION_EXPRESSION,
  106    106   
        &DELETE_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
  107    107   
        &DELETE_MEMBER_EXPRESSION_ATTRIBUTE_VALUES,
  108    108   
        &DELETE_MEMBER_RETURN_VALUES_ON_CONDITION_CHECK_FAILURE,
  109    109   
    ],
  110    110   
);
  111    111   
impl Delete {
  112    112   
    /// The schema for this shape.
  113    113   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &DELETE_SCHEMA;
  114    114   
}
  115    115   
impl ::aws_smithy_schema::serde::SerializableStruct for Delete {
  116    116   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  117    117   
    fn serialize_members(
  118    118   
        &self,
  119    119   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  120    120   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  121    121   
        {
  122    122   
            let val = &self.key;
  123    123   
  124    124   
            ser.write_map(&DELETE_MEMBER_KEY, &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  125    125   
                for (key, value) in val {
  126    126   
                    ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  127         -
                    todo!("schema: unsupported map value type");
         127  +
                    ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
  128    128   
                }
  129    129   
                Ok(())
  130    130   
            })?;
  131    131   
        }
  132    132   
        {
  133    133   
            let val = &self.table_name;
  134    134   
            ser.write_string(&DELETE_MEMBER_TABLE_NAME, val)?;
  135    135   
        }
  136    136   
        if let Some(ref val) = self.condition_expression {
  137    137   
            ser.write_string(&DELETE_MEMBER_CONDITION_EXPRESSION, val)?;
  138    138   
        }
  139    139   
        if let Some(ref val) = self.expression_attribute_names {
  140    140   
            ser.write_map(
  141    141   
                &DELETE_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
  142    142   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  143    143   
                    for (key, value) in val {
  144    144   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  145    145   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, value)?;
  146    146   
                    }
  147    147   
                    Ok(())
  148    148   
                },
  149    149   
            )?;
  150    150   
        }
  151    151   
        if let Some(ref val) = self.expression_attribute_values {
  152    152   
            ser.write_map(
  153    153   
                &DELETE_MEMBER_EXPRESSION_ATTRIBUTE_VALUES,
  154    154   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  155    155   
                    for (key, value) in val {
  156    156   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  157         -
                        todo!("schema: unsupported map value type");
         157  +
                        ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
  158    158   
                    }
  159    159   
                    Ok(())
  160    160   
                },
  161    161   
            )?;
  162    162   
        }
  163    163   
        if let Some(ref val) = self.return_values_on_condition_check_failure {
  164    164   
            ser.write_string(&DELETE_MEMBER_RETURN_VALUES_ON_CONDITION_CHECK_FAILURE, val.as_str())?;
  165    165   
        }
  166    166   
        Ok(())
  167    167   
    }
  168    168   
}
  169    169   
impl Delete {
  170    170   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  171         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  172         -
        deserializer: &mut D,
         171  +
    pub fn deserialize(
         172  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  173    173   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  174    174   
        #[allow(unused_variables, unused_mut)]
  175    175   
        let mut builder = Self::builder();
  176    176   
        #[allow(
  177    177   
            unused_variables,
  178    178   
            unreachable_code,
  179    179   
            clippy::single_match,
  180    180   
            clippy::match_single_binding,
  181    181   
            clippy::diverging_sub_expression
  182    182   
        )]
  183         -
        deserializer.read_struct(&DELETE_SCHEMA, (), |_, member, deser| {
         183  +
        deserializer.read_struct(&DELETE_SCHEMA, &mut |member, deser| {
  184    184   
            match member.member_index() {
  185    185   
                Some(0) => {
  186    186   
                    builder.key = Some({
  187         -
                        let container = if let Some(cap) = deser.container_size() {
  188         -
                            std::collections::HashMap::with_capacity(cap)
  189         -
                        } else {
  190         -
                            std::collections::HashMap::new()
  191         -
                        };
  192         -
                        deser.read_map(member, container, |mut map, key, deser| {
  193         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  194         -
                            Ok(map)
  195         -
                        })?
         187  +
                        let mut container = std::collections::HashMap::new();
         188  +
                        deser.read_map(member, &mut |key, deser| {
         189  +
                            container.insert(key, crate::types::AttributeValue::deserialize(deser)?);
         190  +
                            Ok(())
         191  +
                        })?;
         192  +
                        container
  196    193   
                    });
  197    194   
                }
  198    195   
                Some(1) => {
  199    196   
                    builder.table_name = Some(deser.read_string(member)?);
  200    197   
                }
  201    198   
                Some(2) => {
  202    199   
                    builder.condition_expression = Some(deser.read_string(member)?);
  203    200   
                }
  204    201   
                Some(3) => {
  205         -
                    builder.expression_attribute_names = Some({
  206         -
                        let container = if let Some(cap) = deser.container_size() {
  207         -
                            std::collections::HashMap::with_capacity(cap)
  208         -
                        } else {
  209         -
                            std::collections::HashMap::new()
  210         -
                        };
  211         -
                        deser.read_map(member, container, |mut map, key, deser| {
  212         -
                            map.insert(key, deser.read_string(member)?);
  213         -
                            Ok(map)
  214         -
                        })?
  215         -
                    });
         202  +
                    builder.expression_attribute_names = Some(deser.read_string_string_map(member)?);
  216    203   
                }
  217    204   
                Some(4) => {
  218    205   
                    builder.expression_attribute_values = Some({
  219         -
                        let container = if let Some(cap) = deser.container_size() {
  220         -
                            std::collections::HashMap::with_capacity(cap)
  221         -
                        } else {
  222         -
                            std::collections::HashMap::new()
  223         -
                        };
  224         -
                        deser.read_map(member, container, |mut map, key, deser| {
  225         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  226         -
                            Ok(map)
  227         -
                        })?
         206  +
                        let mut container = std::collections::HashMap::new();
         207  +
                        deser.read_map(member, &mut |key, deser| {
         208  +
                            container.insert(key, crate::types::AttributeValue::deserialize(deser)?);
         209  +
                            Ok(())
         210  +
                        })?;
         211  +
                        container
  228    212   
                    });
  229    213   
                }
  230    214   
                Some(5) => {
  231    215   
                    builder.return_values_on_condition_check_failure = Some(crate::types::ReturnValuesOnConditionCheckFailure::from(
  232    216   
                        deser.read_string(member)?.as_str(),
  233    217   
                    ));
  234    218   
                }
  235    219   
                _ => {}
  236    220   
            }
  237    221   
            Ok(())
  238    222   
        })?;
         223  +
        builder.key = builder.key.or(Some(::std::collections::HashMap::new()));
         224  +
        builder.table_name = builder.table_name.or(Some(String::new()));
  239    225   
        builder
  240    226   
            .build()
  241    227   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  242    228   
    }
  243    229   
}
         230  +
impl Delete {
         231  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         232  +
    pub fn deserialize_with_response(
         233  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         234  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         235  +
        _status: u16,
         236  +
        _body: &[u8],
         237  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         238  +
        Self::deserialize(deserializer)
         239  +
    }
         240  +
}
  244    241   
impl Delete {
  245    242   
    /// Creates a new builder-style object to manufacture [`Delete`](crate::types::Delete).
  246    243   
    pub fn builder() -> crate::types::builders::DeleteBuilder {
  247    244   
        crate::types::builders::DeleteBuilder::default()
  248    245   
    }
  249    246   
}
  250    247   
  251    248   
/// A builder for [`Delete`](crate::types::Delete).
  252    249   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  253    250   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/types/_delete_global_secondary_index_action.rs

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