Client Test

Client Test

rev. 163d4d6410694aaf071424777ecbecd050925f36 (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/operation/streaming_operation_with_optional_data/_streaming_operation_with_optional_data_input.rs

@@ -3,3 +137,144 @@
   23     23   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   24     24   
    "StreamingOperationWithOptionalDataInput",
   25     25   
);
   26     26   
static STREAMINGOPERATIONWITHOPTIONALDATAINPUT_MEMBER_OPTIONAL_DATA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   27     27   
    ::aws_smithy_schema::ShapeId::from_static(
   28     28   
        "smithy.protocoltests.rpcv2Cbor.synthetic#StreamingOperationWithOptionalDataInput$optionalData",
   29     29   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   30     30   
        "StreamingOperationWithOptionalDataInput",
   31     31   
    ),
   32     32   
    ::aws_smithy_schema::ShapeType::String,
   33         -
    "optional_data",
          33  +
    "optionalData",
   34     34   
    0,
   35     35   
);
   36     36   
static STREAMINGOPERATIONWITHOPTIONALDATAINPUT_MEMBER_EVENTS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   37     37   
    ::aws_smithy_schema::ShapeId::from_static(
   38     38   
        "smithy.protocoltests.rpcv2Cbor.synthetic#StreamingOperationWithOptionalDataInput$events",
   39     39   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   40     40   
        "StreamingOperationWithOptionalDataInput",
   41     41   
    ),
   42     42   
    ::aws_smithy_schema::ShapeType::Union,
   43     43   
    "events",
   44     44   
    1,
   45     45   
);
   46     46   
static STREAMINGOPERATIONWITHOPTIONALDATAINPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   47     47   
    STREAMINGOPERATIONWITHOPTIONALDATAINPUT_SCHEMA_ID,
   48     48   
    ::aws_smithy_schema::ShapeType::Structure,
   49     49   
    &[
   50     50   
        &STREAMINGOPERATIONWITHOPTIONALDATAINPUT_MEMBER_OPTIONAL_DATA,
   51     51   
        &STREAMINGOPERATIONWITHOPTIONALDATAINPUT_MEMBER_EVENTS,
   52     52   
    ],
   53     53   
);
   54     54   
impl StreamingOperationWithOptionalDataInput {
   55     55   
    /// The schema for this shape.
   56     56   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &STREAMINGOPERATIONWITHOPTIONALDATAINPUT_SCHEMA;
   57     57   
}
   58     58   
impl ::aws_smithy_schema::serde::SerializableStruct for StreamingOperationWithOptionalDataInput {
   59     59   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   60     60   
    fn serialize_members(
   61     61   
        &self,
   62     62   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   63     63   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   64     64   
        if let Some(ref val) = self.optional_data {
   65     65   
            ser.write_string(&STREAMINGOPERATIONWITHOPTIONALDATAINPUT_MEMBER_OPTIONAL_DATA, val)?;
   66     66   
        }
   67         -
        {
   68         -
            let val = &self.events;
   69         -
            ser.write_null(&STREAMINGOPERATIONWITHOPTIONALDATAINPUT_MEMBER_EVENTS)?;
   70         -
        }
   71     67   
        Ok(())
   72     68   
    }
   73     69   
}
   74     70   
impl StreamingOperationWithOptionalDataInput {
   75     71   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   76         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   77         -
        deserializer: &mut D,
          72  +
    pub fn deserialize(
          73  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   78     74   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   79     75   
        #[allow(unused_variables, unused_mut)]
   80     76   
        let mut builder = Self::builder();
   81     77   
        #[allow(
   82     78   
            unused_variables,
   83     79   
            unreachable_code,
   84     80   
            clippy::single_match,
   85     81   
            clippy::match_single_binding,
   86     82   
            clippy::diverging_sub_expression
   87     83   
        )]
   88         -
        deserializer.read_struct(&STREAMINGOPERATIONWITHOPTIONALDATAINPUT_SCHEMA, (), |_, member, deser| {
          84  +
        deserializer.read_struct(&STREAMINGOPERATIONWITHOPTIONALDATAINPUT_SCHEMA, &mut |member, deser| {
   89     85   
            match member.member_index() {
   90     86   
                Some(0) => {
   91     87   
                    builder.optional_data = Some(deser.read_string(member)?);
   92     88   
                }
   93     89   
                Some(1) => {
   94     90   
                    builder.events = Some({
   95     91   
                        let _ = member;
   96         -
                        todo!("deserialize aggregate")
          92  +
                        todo!("deserialize streaming union")
   97     93   
                    });
   98     94   
                }
   99     95   
                _ => {}
  100     96   
            }
  101     97   
            Ok(())
  102     98   
        })?;
  103     99   
        builder
  104    100   
            .build()
  105    101   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  106    102   
    }
  107    103   
}
         104  +
impl StreamingOperationWithOptionalDataInput {
         105  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         106  +
    pub fn deserialize_with_response(
         107  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         108  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         109  +
        _status: u16,
         110  +
        _body: &[u8],
         111  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         112  +
        Self::deserialize(deserializer)
         113  +
    }
         114  +
}
  108    115   
impl StreamingOperationWithOptionalDataInput {
  109    116   
    /// Creates a new builder-style object to manufacture [`StreamingOperationWithOptionalDataInput`](crate::operation::streaming_operation_with_optional_data::StreamingOperationWithOptionalDataInput).
  110    117   
    pub fn builder() -> crate::operation::streaming_operation_with_optional_data::builders::StreamingOperationWithOptionalDataInputBuilder {
  111    118   
        crate::operation::streaming_operation_with_optional_data::builders::StreamingOperationWithOptionalDataInputBuilder::default()
  112    119   
    }
  113    120   
    #[allow(unused)]
  114    121   
    pub(crate) fn into_builder(
  115    122   
        self,
  116    123   
    ) -> crate::operation::streaming_operation_with_optional_data::builders::StreamingOperationWithOptionalDataInputBuilder {
  117    124   
        Self::builder().set_optional_data(self.optional_data).events(self.events)

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/operation/streaming_operation_with_optional_data/_streaming_operation_with_optional_data_output.rs

@@ -3,3 +137,144 @@
   23     23   
    "smithy.protocoltests.rpcv2Cbor.synthetic",
   24     24   
    "StreamingOperationWithOptionalDataOutput",
   25     25   
);
   26     26   
static STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_MEMBER_OPTIONAL_RESPONSE_DATA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   27     27   
    ::aws_smithy_schema::ShapeId::from_static(
   28     28   
        "smithy.protocoltests.rpcv2Cbor.synthetic#StreamingOperationWithOptionalDataOutput$optionalResponseData",
   29     29   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   30     30   
        "StreamingOperationWithOptionalDataOutput",
   31     31   
    ),
   32     32   
    ::aws_smithy_schema::ShapeType::String,
   33         -
    "optional_response_data",
          33  +
    "optionalResponseData",
   34     34   
    0,
   35     35   
);
   36     36   
static STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_MEMBER_EVENTS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   37     37   
    ::aws_smithy_schema::ShapeId::from_static(
   38     38   
        "smithy.protocoltests.rpcv2Cbor.synthetic#StreamingOperationWithOptionalDataOutput$events",
   39     39   
        "smithy.protocoltests.rpcv2Cbor.synthetic",
   40     40   
        "StreamingOperationWithOptionalDataOutput",
   41     41   
    ),
   42     42   
    ::aws_smithy_schema::ShapeType::Union,
   43     43   
    "events",
   44     44   
    1,
   45     45   
);
   46     46   
static STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   47     47   
    STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_SCHEMA_ID,
   48     48   
    ::aws_smithy_schema::ShapeType::Structure,
   49     49   
    &[
   50     50   
        &STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_MEMBER_OPTIONAL_RESPONSE_DATA,
   51     51   
        &STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_MEMBER_EVENTS,
   52     52   
    ],
   53     53   
);
   54     54   
impl StreamingOperationWithOptionalDataOutput {
   55     55   
    /// The schema for this shape.
   56     56   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_SCHEMA;
   57     57   
}
   58     58   
impl ::aws_smithy_schema::serde::SerializableStruct for StreamingOperationWithOptionalDataOutput {
   59     59   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   60     60   
    fn serialize_members(
   61     61   
        &self,
   62     62   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   63     63   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   64     64   
        if let Some(ref val) = self.optional_response_data {
   65     65   
            ser.write_string(&STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_MEMBER_OPTIONAL_RESPONSE_DATA, val)?;
   66     66   
        }
   67         -
        {
   68         -
            let val = &self.events;
   69         -
            ser.write_null(&STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_MEMBER_EVENTS)?;
   70         -
        }
   71     67   
        Ok(())
   72     68   
    }
   73     69   
}
   74     70   
impl StreamingOperationWithOptionalDataOutput {
   75     71   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   76         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   77         -
        deserializer: &mut D,
          72  +
    pub fn deserialize(
          73  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   78     74   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   79     75   
        #[allow(unused_variables, unused_mut)]
   80     76   
        let mut builder = Self::builder();
   81     77   
        #[allow(
   82     78   
            unused_variables,
   83     79   
            unreachable_code,
   84     80   
            clippy::single_match,
   85     81   
            clippy::match_single_binding,
   86     82   
            clippy::diverging_sub_expression
   87     83   
        )]
   88         -
        deserializer.read_struct(&STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_SCHEMA, (), |_, member, deser| {
          84  +
        deserializer.read_struct(&STREAMINGOPERATIONWITHOPTIONALDATAOUTPUT_SCHEMA, &mut |member, deser| {
   89     85   
            match member.member_index() {
   90     86   
                Some(0) => {
   91     87   
                    builder.optional_response_data = Some(deser.read_string(member)?);
   92     88   
                }
   93     89   
                Some(1) => {
   94     90   
                    builder.events = Some({
   95     91   
                        let _ = member;
   96         -
                        todo!("deserialize aggregate")
          92  +
                        todo!("deserialize streaming union")
   97     93   
                    });
   98     94   
                }
   99     95   
                _ => {}
  100     96   
            }
  101     97   
            Ok(())
  102     98   
        })?;
  103     99   
        builder
  104    100   
            .build()
  105    101   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  106    102   
    }
  107    103   
}
         104  +
impl StreamingOperationWithOptionalDataOutput {
         105  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         106  +
    pub fn deserialize_with_response(
         107  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         108  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         109  +
        _status: u16,
         110  +
        _body: &[u8],
         111  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         112  +
        Self::deserialize(deserializer)
         113  +
    }
         114  +
}
  108    115   
impl StreamingOperationWithOptionalDataOutput {
  109    116   
    /// Creates a new builder-style object to manufacture [`StreamingOperationWithOptionalDataOutput`](crate::operation::streaming_operation_with_optional_data::StreamingOperationWithOptionalDataOutput).
  110    117   
    pub fn builder() -> crate::operation::streaming_operation_with_optional_data::builders::StreamingOperationWithOptionalDataOutputBuilder {
  111    118   
        crate::operation::streaming_operation_with_optional_data::builders::StreamingOperationWithOptionalDataOutputBuilder::default()
  112    119   
    }
  113    120   
    #[allow(unused)]
  114    121   
    pub(crate) fn into_builder(
  115    122   
        self,
  116    123   
    ) -> crate::operation::streaming_operation_with_optional_data::builders::StreamingOperationWithOptionalDataOutputBuilder {
  117    124   
        Self::builder()

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_complex_struct.rs

@@ -67,67 +426,425 @@
   87     87   
    "structure",
   88     88   
    0,
   89     89   
);
   90     90   
static COMPLEXSTRUCT_MEMBER_EMPTY_STRUCTURE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   91     91   
    ::aws_smithy_schema::ShapeId::from_static(
   92     92   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$emptyStructure",
   93     93   
        "smithy.protocoltests.rpcv2Cbor",
   94     94   
        "ComplexStruct",
   95     95   
    ),
   96     96   
    ::aws_smithy_schema::ShapeType::Structure,
   97         -
    "empty_structure",
          97  +
    "emptyStructure",
   98     98   
    1,
   99     99   
);
  100    100   
static COMPLEXSTRUCT_MEMBER_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  101    101   
    ::aws_smithy_schema::ShapeId::from_static(
  102    102   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$list",
  103    103   
        "smithy.protocoltests.rpcv2Cbor",
  104    104   
        "ComplexStruct",
  105    105   
    ),
  106    106   
    ::aws_smithy_schema::ShapeType::List,
  107    107   
    "list",
  108    108   
    2,
  109    109   
);
  110    110   
static COMPLEXSTRUCT_MEMBER_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  111    111   
    ::aws_smithy_schema::ShapeId::from_static(
  112    112   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$map",
  113    113   
        "smithy.protocoltests.rpcv2Cbor",
  114    114   
        "ComplexStruct",
  115    115   
    ),
  116    116   
    ::aws_smithy_schema::ShapeType::Map,
  117    117   
    "map",
  118    118   
    3,
  119    119   
);
  120    120   
static COMPLEXSTRUCT_MEMBER_UNION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  121    121   
    ::aws_smithy_schema::ShapeId::from_static(
  122    122   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$union",
  123    123   
        "smithy.protocoltests.rpcv2Cbor",
  124    124   
        "ComplexStruct",
  125    125   
    ),
  126    126   
    ::aws_smithy_schema::ShapeType::Union,
  127    127   
    "union",
  128    128   
    4,
  129    129   
);
  130    130   
static COMPLEXSTRUCT_MEMBER_UNIT_UNION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  131    131   
    ::aws_smithy_schema::ShapeId::from_static(
  132    132   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$unitUnion",
  133    133   
        "smithy.protocoltests.rpcv2Cbor",
  134    134   
        "ComplexStruct",
  135    135   
    ),
  136    136   
    ::aws_smithy_schema::ShapeType::Union,
  137         -
    "unit_union",
         137  +
    "unitUnion",
  138    138   
    5,
  139    139   
);
  140    140   
static COMPLEXSTRUCT_MEMBER_STRUCTURE_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  141    141   
    ::aws_smithy_schema::ShapeId::from_static(
  142    142   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$structureList",
  143    143   
        "smithy.protocoltests.rpcv2Cbor",
  144    144   
        "ComplexStruct",
  145    145   
    ),
  146    146   
    ::aws_smithy_schema::ShapeType::List,
  147         -
    "structure_list",
         147  +
    "structureList",
  148    148   
    6,
  149    149   
);
  150    150   
static COMPLEXSTRUCT_MEMBER_COMPLEX_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  151    151   
    ::aws_smithy_schema::ShapeId::from_static(
  152    152   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$complexList",
  153    153   
        "smithy.protocoltests.rpcv2Cbor",
  154    154   
        "ComplexStruct",
  155    155   
    ),
  156    156   
    ::aws_smithy_schema::ShapeType::List,
  157         -
    "complex_list",
         157  +
    "complexList",
  158    158   
    7,
  159    159   
);
  160    160   
static COMPLEXSTRUCT_MEMBER_COMPLEX_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  161    161   
    ::aws_smithy_schema::ShapeId::from_static(
  162    162   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$complexMap",
  163    163   
        "smithy.protocoltests.rpcv2Cbor",
  164    164   
        "ComplexStruct",
  165    165   
    ),
  166    166   
    ::aws_smithy_schema::ShapeType::Map,
  167         -
    "complex_map",
         167  +
    "complexMap",
  168    168   
    8,
  169    169   
);
  170    170   
static COMPLEXSTRUCT_MEMBER_COMPLEX_UNION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  171    171   
    ::aws_smithy_schema::ShapeId::from_static(
  172    172   
        "smithy.protocoltests.rpcv2Cbor#ComplexStruct$complexUnion",
  173    173   
        "smithy.protocoltests.rpcv2Cbor",
  174    174   
        "ComplexStruct",
  175    175   
    ),
  176    176   
    ::aws_smithy_schema::ShapeType::Union,
  177         -
    "complex_union",
         177  +
    "complexUnion",
  178    178   
    9,
  179    179   
);
  180    180   
static COMPLEXSTRUCT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  181    181   
    COMPLEXSTRUCT_SCHEMA_ID,
  182    182   
    ::aws_smithy_schema::ShapeType::Structure,
  183    183   
    &[
  184    184   
        &COMPLEXSTRUCT_MEMBER_STRUCTURE,
  185    185   
        &COMPLEXSTRUCT_MEMBER_EMPTY_STRUCTURE,
  186    186   
        &COMPLEXSTRUCT_MEMBER_LIST,
  187    187   
        &COMPLEXSTRUCT_MEMBER_MAP,
  188    188   
        &COMPLEXSTRUCT_MEMBER_UNION,
  189    189   
        &COMPLEXSTRUCT_MEMBER_UNIT_UNION,
  190    190   
        &COMPLEXSTRUCT_MEMBER_STRUCTURE_LIST,
  191    191   
        &COMPLEXSTRUCT_MEMBER_COMPLEX_LIST,
  192    192   
        &COMPLEXSTRUCT_MEMBER_COMPLEX_MAP,
  193    193   
        &COMPLEXSTRUCT_MEMBER_COMPLEX_UNION,
  194    194   
    ],
  195    195   
);
  196    196   
impl ComplexStruct {
  197    197   
    /// The schema for this shape.
  198    198   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &COMPLEXSTRUCT_SCHEMA;
  199    199   
}
  200    200   
impl ::aws_smithy_schema::serde::SerializableStruct for ComplexStruct {
  201    201   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
  202    202   
    fn serialize_members(
  203    203   
        &self,
  204    204   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
  205    205   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
  206    206   
        if let Some(ref val) = self.structure {
  207    207   
            ser.write_struct(&COMPLEXSTRUCT_MEMBER_STRUCTURE, val)?;
  208    208   
        }
  209    209   
        if let Some(ref val) = self.empty_structure {
  210    210   
            ser.write_struct(&COMPLEXSTRUCT_MEMBER_EMPTY_STRUCTURE, val)?;
  211    211   
        }
  212    212   
        if let Some(ref val) = self.list {
  213    213   
            ser.write_list(
  214    214   
                &COMPLEXSTRUCT_MEMBER_LIST,
  215    215   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  216    216   
                    for item in val {
  217    217   
                        ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
  218    218   
                    }
  219    219   
                    Ok(())
  220    220   
                },
  221    221   
            )?;
  222    222   
        }
  223    223   
        if let Some(ref val) = self.map {
  224    224   
            ser.write_map(&COMPLEXSTRUCT_MEMBER_MAP, &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  225    225   
                for (key, value) in val {
  226    226   
                    ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  227    227   
                    ser.write_integer(&::aws_smithy_schema::prelude::INTEGER, *value)?;
  228    228   
                }
  229    229   
                Ok(())
  230    230   
            })?;
  231    231   
        }
  232    232   
        if let Some(ref val) = self.union {
  233         -
            ser.write_null(&COMPLEXSTRUCT_MEMBER_UNION)?;
         233  +
            ser.write_struct(&COMPLEXSTRUCT_MEMBER_UNION, val)?;
  234    234   
        }
  235    235   
        if let Some(ref val) = self.unit_union {
  236         -
            ser.write_null(&COMPLEXSTRUCT_MEMBER_UNIT_UNION)?;
         236  +
            ser.write_struct(&COMPLEXSTRUCT_MEMBER_UNIT_UNION, val)?;
  237    237   
        }
  238    238   
        if let Some(ref val) = self.structure_list {
  239    239   
            ser.write_list(
  240    240   
                &COMPLEXSTRUCT_MEMBER_STRUCTURE_LIST,
  241    241   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  242    242   
                    for item in val {
  243    243   
                        ser.write_struct(crate::types::SimpleStruct::SCHEMA, item)?;
  244    244   
                    }
  245    245   
                    Ok(())
  246    246   
                },
  247    247   
            )?;
  248    248   
        }
  249    249   
        {
  250    250   
            let val = &self.complex_list;
  251    251   
  252    252   
            ser.write_list(
  253    253   
                &COMPLEXSTRUCT_MEMBER_COMPLEX_LIST,
  254    254   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  255    255   
                    for item in val {
  256         -
                        todo!("schema: unsupported list element type");
         256  +
                        ser.write_map(
         257  +
                            &::aws_smithy_schema::prelude::DOCUMENT,
         258  +
                            &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         259  +
                                for (key, value) in item {
         260  +
                                    ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
         261  +
                                    ser.write_struct(crate::types::ComplexUnion::SCHEMA, value)?;
         262  +
                                }
         263  +
                                Ok(())
         264  +
                            },
         265  +
                        )?;
  257    266   
                    }
  258    267   
                    Ok(())
  259    268   
                },
  260    269   
            )?;
  261    270   
        }
  262    271   
        {
  263    272   
            let val = &self.complex_map;
  264    273   
  265    274   
            ser.write_map(
  266    275   
                &COMPLEXSTRUCT_MEMBER_COMPLEX_MAP,
  267    276   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
  268    277   
                    for (key, value) in val {
  269    278   
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
  270         -
                        todo!("schema: unsupported map value type");
         279  +
                        ser.write_struct(crate::types::ComplexUnion::SCHEMA, value)?;
  271    280   
                    }
  272    281   
                    Ok(())
  273    282   
                },
  274    283   
            )?;
  275    284   
        }
  276    285   
        {
  277    286   
            let val = &self.complex_union;
  278         -
            ser.write_null(&COMPLEXSTRUCT_MEMBER_COMPLEX_UNION)?;
         287  +
            ser.write_struct(&COMPLEXSTRUCT_MEMBER_COMPLEX_UNION, val)?;
  279    288   
        }
  280    289   
        Ok(())
  281    290   
    }
  282    291   
}
  283    292   
impl ComplexStruct {
  284    293   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  285         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  286         -
        deserializer: &mut D,
         294  +
    pub fn deserialize(
         295  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  287    296   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  288    297   
        #[allow(unused_variables, unused_mut)]
  289    298   
        let mut builder = Self::builder();
  290    299   
        #[allow(
  291    300   
            unused_variables,
  292    301   
            unreachable_code,
  293    302   
            clippy::single_match,
  294    303   
            clippy::match_single_binding,
  295    304   
            clippy::diverging_sub_expression
  296    305   
        )]
  297         -
        deserializer.read_struct(&COMPLEXSTRUCT_SCHEMA, (), |_, member, deser| {
         306  +
        deserializer.read_struct(&COMPLEXSTRUCT_SCHEMA, &mut |member, deser| {
  298    307   
            match member.member_index() {
  299    308   
                Some(0) => {
  300    309   
                    builder.structure = Some(crate::types::SimpleStruct::deserialize(deser)?);
  301    310   
                }
  302    311   
                Some(1) => {
  303    312   
                    builder.empty_structure = Some(crate::types::EmptyStruct::deserialize(deser)?);
  304    313   
                }
  305    314   
                Some(2) => {
  306         -
                    builder.list = Some({
  307         -
                        let container = if let Some(cap) = deser.container_size() {
  308         -
                            Vec::with_capacity(cap)
  309         -
                        } else {
  310         -
                            Vec::new()
  311         -
                        };
  312         -
                        deser.read_list(member, container, |mut list, deser| {
  313         -
                            list.push(deser.read_string(member)?);
  314         -
                            Ok(list)
  315         -
                        })?
  316         -
                    });
         315  +
                    builder.list = Some(deser.read_string_list(member)?);
  317    316   
                }
  318    317   
                Some(3) => {
  319    318   
                    builder.map = Some({
  320         -
                        let container = if let Some(cap) = deser.container_size() {
  321         -
                            std::collections::HashMap::with_capacity(cap)
  322         -
                        } else {
  323         -
                            std::collections::HashMap::new()
  324         -
                        };
  325         -
                        deser.read_map(member, container, |mut map, key, deser| {
  326         -
                            map.insert(key, deser.read_integer(member)?);
  327         -
                            Ok(map)
  328         -
                        })?
         319  +
                        let mut container = std::collections::HashMap::new();
         320  +
                        deser.read_map(member, &mut |key, deser| {
         321  +
                            container.insert(key, deser.read_integer(member)?);
         322  +
                            Ok(())
         323  +
                        })?;
         324  +
                        container
  329    325   
                    });
  330    326   
                }
  331    327   
                Some(4) => {
  332         -
                    builder.union = Some({
  333         -
                        let _ = member;
  334         -
                        todo!("deserialize aggregate")
  335         -
                    });
         328  +
                    builder.union = Some(crate::types::SimpleUnion::deserialize(deser)?);
  336    329   
                }
  337    330   
                Some(5) => {
  338         -
                    builder.unit_union = Some({
  339         -
                        let _ = member;
  340         -
                        todo!("deserialize aggregate")
  341         -
                    });
         331  +
                    builder.unit_union = Some(crate::types::UnitUnion::deserialize(deser)?);
  342    332   
                }
  343    333   
                Some(6) => {
  344    334   
                    builder.structure_list = Some({
  345         -
                        let container = if let Some(cap) = deser.container_size() {
  346         -
                            Vec::with_capacity(cap)
  347         -
                        } else {
  348         -
                            Vec::new()
  349         -
                        };
  350         -
                        deser.read_list(member, container, |mut list, deser| {
  351         -
                            list.push(crate::types::SimpleStruct::deserialize(deser)?);
  352         -
                            Ok(list)
  353         -
                        })?
         335  +
                        let mut container = Vec::new();
         336  +
                        deser.read_list(member, &mut |deser| {
         337  +
                            container.push(crate::types::SimpleStruct::deserialize(deser)?);
         338  +
                            Ok(())
         339  +
                        })?;
         340  +
                        container
  354    341   
                    });
  355    342   
                }
  356    343   
                Some(7) => {
  357    344   
                    builder.complex_list = Some({
  358         -
                        let container = if let Some(cap) = deser.container_size() {
  359         -
                            Vec::with_capacity(cap)
  360         -
                        } else {
  361         -
                            Vec::new()
  362         -
                        };
  363         -
                        deser.read_list(member, container, |mut list, deser| {
  364         -
                            list.push(todo!("deserialize nested aggregate"));
  365         -
                            Ok(list)
  366         -
                        })?
         345  +
                        let mut container = Vec::new();
         346  +
                        deser.read_list(member, &mut |deser| {
         347  +
                            container.push({
         348  +
                                let mut map = ::std::collections::HashMap::new();
         349  +
                                deser.read_map(member, &mut |key, deser| {
         350  +
                                    let value = crate::types::ComplexUnion::deserialize(deser)?;
         351  +
                                    map.insert(key, value);
         352  +
                                    Ok(())
         353  +
                                })?;
         354  +
                                map
         355  +
                            });
         356  +
                            Ok(())
         357  +
                        })?;
         358  +
                        container
  367    359   
                    });
  368    360   
                }
  369    361   
                Some(8) => {
  370    362   
                    builder.complex_map = Some({
  371         -
                        let container = if let Some(cap) = deser.container_size() {
  372         -
                            std::collections::HashMap::with_capacity(cap)
  373         -
                        } else {
  374         -
                            std::collections::HashMap::new()
  375         -
                        };
  376         -
                        deser.read_map(member, container, |mut map, key, deser| {
  377         -
                            map.insert(key, todo!("deserialize nested aggregate"));
  378         -
                            Ok(map)
  379         -
                        })?
         363  +
                        let mut container = std::collections::HashMap::new();
         364  +
                        deser.read_map(member, &mut |key, deser| {
         365  +
                            container.insert(key, crate::types::ComplexUnion::deserialize(deser)?);
         366  +
                            Ok(())
         367  +
                        })?;
         368  +
                        container
  380    369   
                    });
  381    370   
                }
  382    371   
                Some(9) => {
  383         -
                    builder.complex_union = Some(Box::new({
  384         -
                        let _ = member;
  385         -
                        todo!("deserialize aggregate")
  386         -
                    }));
         372  +
                    builder.complex_union = Some(Box::new(crate::types::ComplexUnion::deserialize(deser)?));
  387    373   
                }
  388    374   
                _ => {}
  389    375   
            }
  390    376   
            Ok(())
  391    377   
        })?;
         378  +
        builder.complex_list = builder.complex_list.or(Some(Vec::new()));
         379  +
        builder.complex_map = builder.complex_map.or(Some(::std::collections::HashMap::new()));
  392    380   
        builder
  393    381   
            .build()
  394    382   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  395    383   
    }
  396    384   
}
         385  +
impl ComplexStruct {
         386  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         387  +
    pub fn deserialize_with_response(
         388  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         389  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         390  +
        _status: u16,
         391  +
        _body: &[u8],
         392  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         393  +
        Self::deserialize(deserializer)
         394  +
    }
         395  +
}
  397    396   
impl ComplexStruct {
  398    397   
    /// Creates a new builder-style object to manufacture [`ComplexStruct`](crate::types::ComplexStruct).
  399    398   
    pub fn builder() -> crate::types::builders::ComplexStructBuilder {
  400    399   
        crate::types::builders::ComplexStructBuilder::default()
  401    400   
    }
  402    401   
}
  403    402   
  404    403   
/// A builder for [`ComplexStruct`](crate::types::ComplexStruct).
  405    404   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  406    405   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_complex_union.rs

@@ -67,67 +0,227 @@
   87     87   
    }
   88     88   
    /// Returns true if this is a [`Union`](crate::types::ComplexUnion::Union).
   89     89   
    pub fn is_union(&self) -> bool {
   90     90   
        self.as_union().is_ok()
   91     91   
    }
   92     92   
    /// Returns true if the enum instance is the `Unknown` variant.
   93     93   
    pub fn is_unknown(&self) -> bool {
   94     94   
        matches!(self, Self::Unknown)
   95     95   
    }
   96     96   
}
          97  +
static COMPLEXUNION_SCHEMA_ID: ::aws_smithy_schema::ShapeId = ::aws_smithy_schema::ShapeId::from_static(
          98  +
    "smithy.protocoltests.rpcv2Cbor#ComplexUnion",
          99  +
    "smithy.protocoltests.rpcv2Cbor",
         100  +
    "ComplexUnion",
         101  +
);
         102  +
static COMPLEXUNION_MEMBER_COMPLEXSTRUCT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         103  +
    ::aws_smithy_schema::ShapeId::from_static(
         104  +
        "smithy.protocoltests.rpcv2Cbor#ComplexUnion$complexStruct",
         105  +
        "smithy.protocoltests.rpcv2Cbor",
         106  +
        "ComplexUnion",
         107  +
    ),
         108  +
    ::aws_smithy_schema::ShapeType::Structure,
         109  +
    "complexStruct",
         110  +
    0,
         111  +
);
         112  +
static COMPLEXUNION_MEMBER_STRUCTURE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         113  +
    ::aws_smithy_schema::ShapeId::from_static(
         114  +
        "smithy.protocoltests.rpcv2Cbor#ComplexUnion$structure",
         115  +
        "smithy.protocoltests.rpcv2Cbor",
         116  +
        "ComplexUnion",
         117  +
    ),
         118  +
    ::aws_smithy_schema::ShapeType::Structure,
         119  +
    "structure",
         120  +
    1,
         121  +
);
         122  +
static COMPLEXUNION_MEMBER_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         123  +
    ::aws_smithy_schema::ShapeId::from_static(
         124  +
        "smithy.protocoltests.rpcv2Cbor#ComplexUnion$list",
         125  +
        "smithy.protocoltests.rpcv2Cbor",
         126  +
        "ComplexUnion",
         127  +
    ),
         128  +
    ::aws_smithy_schema::ShapeType::List,
         129  +
    "list",
         130  +
    2,
         131  +
);
         132  +
static COMPLEXUNION_MEMBER_MAP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         133  +
    ::aws_smithy_schema::ShapeId::from_static(
         134  +
        "smithy.protocoltests.rpcv2Cbor#ComplexUnion$map",
         135  +
        "smithy.protocoltests.rpcv2Cbor",
         136  +
        "ComplexUnion",
         137  +
    ),
         138  +
    ::aws_smithy_schema::ShapeType::Map,
         139  +
    "map",
         140  +
    3,
         141  +
);
         142  +
static COMPLEXUNION_MEMBER_UNION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         143  +
    ::aws_smithy_schema::ShapeId::from_static(
         144  +
        "smithy.protocoltests.rpcv2Cbor#ComplexUnion$union",
         145  +
        "smithy.protocoltests.rpcv2Cbor",
         146  +
        "ComplexUnion",
         147  +
    ),
         148  +
    ::aws_smithy_schema::ShapeType::Union,
         149  +
    "union",
         150  +
    4,
         151  +
);
         152  +
static COMPLEXUNION_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
         153  +
    COMPLEXUNION_SCHEMA_ID,
         154  +
    ::aws_smithy_schema::ShapeType::Union,
         155  +
    &[
         156  +
        &COMPLEXUNION_MEMBER_COMPLEXSTRUCT,
         157  +
        &COMPLEXUNION_MEMBER_STRUCTURE,
         158  +
        &COMPLEXUNION_MEMBER_LIST,
         159  +
        &COMPLEXUNION_MEMBER_MAP,
         160  +
        &COMPLEXUNION_MEMBER_UNION,
         161  +
    ],
         162  +
);
         163  +
impl ComplexUnion {
         164  +
    /// The schema for this shape.
         165  +
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &COMPLEXUNION_SCHEMA;
         166  +
}
         167  +
impl ::aws_smithy_schema::serde::SerializableStruct for ComplexUnion {
         168  +
    #[allow(unused_variables, clippy::diverging_sub_expression)]
         169  +
    fn serialize_members(
         170  +
        &self,
         171  +
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
         172  +
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
         173  +
        match self {
         174  +
            Self::ComplexStruct(val) => {
         175  +
                ser.write_struct(&COMPLEXUNION_MEMBER_COMPLEXSTRUCT, val)?;
         176  +
            }
         177  +
            Self::Structure(val) => {
         178  +
                ser.write_struct(&COMPLEXUNION_MEMBER_STRUCTURE, val)?;
         179  +
            }
         180  +
            Self::List(val) => {
         181  +
                ser.write_string_list(&COMPLEXUNION_MEMBER_LIST, val)?;
         182  +
            }
         183  +
            Self::Map(val) => {
         184  +
                ser.write_map(&COMPLEXUNION_MEMBER_MAP, &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
         185  +
                    for (key, value) in val {
         186  +
                        ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
         187  +
                        ser.write_integer(&::aws_smithy_schema::prelude::INTEGER, *value)?;
         188  +
                    }
         189  +
                    Ok(())
         190  +
                })?;
         191  +
            }
         192  +
            Self::Union(val) => {
         193  +
                ser.write_struct(&COMPLEXUNION_MEMBER_UNION, val)?;
         194  +
            }
         195  +
            Self::Unknown => return Err(::aws_smithy_schema::serde::SerdeError::custom("cannot serialize unknown union variant")),
         196  +
        }
         197  +
        Ok(())
         198  +
    }
         199  +
}
         200  +
impl ComplexUnion {
         201  +
    /// Deserializes this union from a [`ShapeDeserializer`].
         202  +
    pub fn deserialize(
         203  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         204  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         205  +
        let mut result: ::std::option::Option<Self> = ::std::option::Option::None;
         206  +
        #[allow(unused_variables, unreachable_code, clippy::single_match, clippy::match_single_binding)]
         207  +
        deserializer.read_struct(&COMPLEXUNION_SCHEMA, &mut |member, deser| {
         208  +
            result = ::std::option::Option::Some(match member.member_index() {
         209  +
                Some(0) => Self::ComplexStruct(crate::types::ComplexStruct::deserialize(deser)?),
         210  +
                Some(1) => Self::Structure(crate::types::SimpleStruct::deserialize(deser)?),
         211  +
                Some(2) => Self::List(deser.read_string_list(member)?),
         212  +
                Some(3) => Self::Map({
         213  +
                    let mut container = std::collections::HashMap::new();
         214  +
                    deser.read_map(member, &mut |key, deser| {
         215  +
                        container.insert(key, deser.read_integer(member)?);
         216  +
                        Ok(())
         217  +
                    })?;
         218  +
                    container
         219  +
                }),
         220  +
                Some(4) => Self::Union(crate::types::SimpleUnion::deserialize(deser)?),
         221  +
                _ => Self::Unknown,
         222  +
            });
         223  +
            Ok(())
         224  +
        })?;
         225  +
        result.ok_or_else(|| ::aws_smithy_schema::serde::SerdeError::custom("expected a union variant"))
         226  +
    }
         227  +
}

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_empty_struct.rs

@@ -1,1 +65,76 @@
   18     18   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   19     19   
    fn serialize_members(
   20     20   
        &self,
   21     21   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   22     22   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   23     23   
        Ok(())
   24     24   
    }
   25     25   
}
   26     26   
impl EmptyStruct {
   27     27   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   28         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   29         -
        deserializer: &mut D,
          28  +
    pub fn deserialize(
          29  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   30     30   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   31     31   
        #[allow(unused_variables, unused_mut)]
   32     32   
        let mut builder = Self::builder();
   33     33   
        #[allow(
   34     34   
            unused_variables,
   35     35   
            unreachable_code,
   36     36   
            clippy::single_match,
   37     37   
            clippy::match_single_binding,
   38     38   
            clippy::diverging_sub_expression
   39     39   
        )]
   40         -
        deserializer.read_struct(&EMPTYSTRUCT_SCHEMA, (), |_, member, deser| {
          40  +
        deserializer.read_struct(&EMPTYSTRUCT_SCHEMA, &mut |member, deser| {
   41     41   
            match member.member_index() {
   42     42   
                _ => {}
   43     43   
            }
   44     44   
            Ok(())
   45     45   
        })?;
   46     46   
        Ok(builder.build())
   47     47   
    }
   48     48   
}
          49  +
impl EmptyStruct {
          50  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          51  +
    pub fn deserialize_with_response(
          52  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          53  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          54  +
        _status: u16,
          55  +
        _body: &[u8],
          56  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          57  +
        Ok(Self::builder().build())
          58  +
    }
          59  +
}
   49     60   
impl EmptyStruct {
   50     61   
    /// Creates a new builder-style object to manufacture [`EmptyStruct`](crate::types::EmptyStruct).
   51     62   
    pub fn builder() -> crate::types::builders::EmptyStructBuilder {
   52     63   
        crate::types::builders::EmptyStructBuilder::default()
   53     64   
    }
   54     65   
}
   55     66   
   56     67   
/// A builder for [`EmptyStruct`](crate::types::EmptyStruct).
   57     68   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   58     69   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_event.rs

@@ -1,1 +62,73 @@
   15     15   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   16     16   
    fn serialize_members(
   17     17   
        &self,
   18     18   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   19     19   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   20     20   
        Ok(())
   21     21   
    }
   22     22   
}
   23     23   
impl Event {
   24     24   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   25         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   26         -
        deserializer: &mut D,
          25  +
    pub fn deserialize(
          26  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   27     27   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   28     28   
        #[allow(unused_variables, unused_mut)]
   29     29   
        let mut builder = Self::builder();
   30     30   
        #[allow(
   31     31   
            unused_variables,
   32     32   
            unreachable_code,
   33     33   
            clippy::single_match,
   34     34   
            clippy::match_single_binding,
   35     35   
            clippy::diverging_sub_expression
   36     36   
        )]
   37         -
        deserializer.read_struct(&EVENT_SCHEMA, (), |_, member, deser| {
          37  +
        deserializer.read_struct(&EVENT_SCHEMA, &mut |member, deser| {
   38     38   
            match member.member_index() {
   39     39   
                _ => {}
   40     40   
            }
   41     41   
            Ok(())
   42     42   
        })?;
   43     43   
        Ok(builder.build())
   44     44   
    }
   45     45   
}
          46  +
impl Event {
          47  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          48  +
    pub fn deserialize_with_response(
          49  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          50  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          51  +
        _status: u16,
          52  +
        _body: &[u8],
          53  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          54  +
        Ok(Self::builder().build())
          55  +
    }
          56  +
}
   46     57   
impl Event {
   47     58   
    /// Creates a new builder-style object to manufacture [`Event`](crate::types::Event).
   48     59   
    pub fn builder() -> crate::types::builders::EventBuilder {
   49     60   
        crate::types::builders::EventBuilder::default()
   50     61   
    }
   51     62   
}
   52     63   
   53     64   
/// A builder for [`Event`](crate::types::Event).
   54     65   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   55     66   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_events.rs

@@ -37,37 +0,136 @@
   57     57   
    }
   58     58   
    /// Returns true if this is a [`C`](crate::types::Events::C).
   59     59   
    pub fn is_c(&self) -> bool {
   60     60   
        self.as_c().is_ok()
   61     61   
    }
   62     62   
    /// Returns true if the enum instance is the `Unknown` variant.
   63     63   
    pub fn is_unknown(&self) -> bool {
   64     64   
        matches!(self, Self::Unknown)
   65     65   
    }
   66     66   
}
          67  +
static EVENTS_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
          68  +
    ::aws_smithy_schema::ShapeId::from_static("smithy.protocoltests.rpcv2Cbor#Events", "smithy.protocoltests.rpcv2Cbor", "Events");
          69  +
static EVENTS_MEMBER_A: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          70  +
    ::aws_smithy_schema::ShapeId::from_static("smithy.protocoltests.rpcv2Cbor#Events$A", "smithy.protocoltests.rpcv2Cbor", "Events"),
          71  +
    ::aws_smithy_schema::ShapeType::Structure,
          72  +
    "A",
          73  +
    0,
          74  +
);
          75  +
static EVENTS_MEMBER_B: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          76  +
    ::aws_smithy_schema::ShapeId::from_static("smithy.protocoltests.rpcv2Cbor#Events$B", "smithy.protocoltests.rpcv2Cbor", "Events"),
          77  +
    ::aws_smithy_schema::ShapeType::Structure,
          78  +
    "B",
          79  +
    1,
          80  +
);
          81  +
static EVENTS_MEMBER_C: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          82  +
    ::aws_smithy_schema::ShapeId::from_static("smithy.protocoltests.rpcv2Cbor#Events$C", "smithy.protocoltests.rpcv2Cbor", "Events"),
          83  +
    ::aws_smithy_schema::ShapeType::Structure,
          84  +
    "C",
          85  +
    2,
          86  +
);
          87  +
static EVENTS_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
          88  +
    EVENTS_SCHEMA_ID,
          89  +
    ::aws_smithy_schema::ShapeType::Union,
          90  +
    &[&EVENTS_MEMBER_A, &EVENTS_MEMBER_B, &EVENTS_MEMBER_C],
          91  +
)
          92  +
.with_streaming();
          93  +
impl Events {
          94  +
    /// The schema for this shape.
          95  +
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &EVENTS_SCHEMA;
          96  +
}
          97  +
impl ::aws_smithy_schema::serde::SerializableStruct for Events {
          98  +
    #[allow(unused_variables, clippy::diverging_sub_expression)]
          99  +
    fn serialize_members(
         100  +
        &self,
         101  +
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
         102  +
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
         103  +
        match self {
         104  +
            Self::A(val) => {
         105  +
                ser.write_struct(&EVENTS_MEMBER_A, val)?;
         106  +
            }
         107  +
            Self::B(val) => {
         108  +
                ser.write_struct(&EVENTS_MEMBER_B, val)?;
         109  +
            }
         110  +
            Self::C(val) => {
         111  +
                ser.write_struct(&EVENTS_MEMBER_C, val)?;
         112  +
            }
         113  +
            Self::Unknown => return Err(::aws_smithy_schema::serde::SerdeError::custom("cannot serialize unknown union variant")),
         114  +
        }
         115  +
        Ok(())
         116  +
    }
         117  +
}
         118  +
impl Events {
         119  +
    /// Deserializes this union from a [`ShapeDeserializer`].
         120  +
    pub fn deserialize(
         121  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         122  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         123  +
        let mut result: ::std::option::Option<Self> = ::std::option::Option::None;
         124  +
        #[allow(unused_variables, unreachable_code, clippy::single_match, clippy::match_single_binding)]
         125  +
        deserializer.read_struct(&EVENTS_SCHEMA, &mut |member, deser| {
         126  +
            result = ::std::option::Option::Some(match member.member_index() {
         127  +
                Some(0) => Self::A(crate::types::Event::deserialize(deser)?),
         128  +
                Some(1) => Self::B(crate::types::Event::deserialize(deser)?),
         129  +
                Some(2) => Self::C(crate::types::Event::deserialize(deser)?),
         130  +
                _ => Self::Unknown,
         131  +
            });
         132  +
            Ok(())
         133  +
        })?;
         134  +
        result.ok_or_else(|| ::aws_smithy_schema::serde::SerdeError::custom("expected a union variant"))
         135  +
    }
         136  +
}

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_foo_choice.rs

@@ -22,22 +0,118 @@
   42     42   
    }
   43     43   
    /// Returns true if this is a [`Choice2`](crate::types::FooChoice::Choice2).
   44     44   
    pub fn is_choice2(&self) -> bool {
   45     45   
        self.as_choice2().is_ok()
   46     46   
    }
   47     47   
    /// Returns true if the enum instance is the `Unknown` variant.
   48     48   
    pub fn is_unknown(&self) -> bool {
   49     49   
        matches!(self, Self::Unknown)
   50     50   
    }
   51     51   
}
          52  +
static FOOCHOICE_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
          53  +
    ::aws_smithy_schema::ShapeId::from_static("smithy.protocoltests.rpcv2Cbor#FooChoice", "smithy.protocoltests.rpcv2Cbor", "FooChoice");
          54  +
static FOOCHOICE_MEMBER_CHOICE1: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          55  +
    ::aws_smithy_schema::ShapeId::from_static(
          56  +
        "smithy.protocoltests.rpcv2Cbor#FooChoice$choice1",
          57  +
        "smithy.protocoltests.rpcv2Cbor",
          58  +
        "FooChoice",
          59  +
    ),
          60  +
    ::aws_smithy_schema::ShapeType::String,
          61  +
    "choice1",
          62  +
    0,
          63  +
);
          64  +
static FOOCHOICE_MEMBER_CHOICE2: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          65  +
    ::aws_smithy_schema::ShapeId::from_static(
          66  +
        "smithy.protocoltests.rpcv2Cbor#FooChoice$choice2",
          67  +
        "smithy.protocoltests.rpcv2Cbor",
          68  +
        "FooChoice",
          69  +
    ),
          70  +
    ::aws_smithy_schema::ShapeType::Structure,
          71  +
    "choice2",
          72  +
    1,
          73  +
);
          74  +
static FOOCHOICE_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
          75  +
    FOOCHOICE_SCHEMA_ID,
          76  +
    ::aws_smithy_schema::ShapeType::Union,
          77  +
    &[&FOOCHOICE_MEMBER_CHOICE1, &FOOCHOICE_MEMBER_CHOICE2],
          78  +
);
          79  +
impl FooChoice {
          80  +
    /// The schema for this shape.
          81  +
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &FOOCHOICE_SCHEMA;
          82  +
}
          83  +
impl ::aws_smithy_schema::serde::SerializableStruct for FooChoice {
          84  +
    #[allow(unused_variables, clippy::diverging_sub_expression)]
          85  +
    fn serialize_members(
          86  +
        &self,
          87  +
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
          88  +
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
          89  +
        match self {
          90  +
            Self::Choice1(val) => {
          91  +
                ser.write_string(&FOOCHOICE_MEMBER_CHOICE1, val)?;
          92  +
            }
          93  +
            Self::Choice2(val) => {
          94  +
                ser.write_struct(&FOOCHOICE_MEMBER_CHOICE2, val)?;
          95  +
            }
          96  +
            Self::Unknown => return Err(::aws_smithy_schema::serde::SerdeError::custom("cannot serialize unknown union variant")),
          97  +
        }
          98  +
        Ok(())
          99  +
    }
         100  +
}
         101  +
impl FooChoice {
         102  +
    /// Deserializes this union from a [`ShapeDeserializer`].
         103  +
    pub fn deserialize(
         104  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         105  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         106  +
        let mut result: ::std::option::Option<Self> = ::std::option::Option::None;
         107  +
        #[allow(unused_variables, unreachable_code, clippy::single_match, clippy::match_single_binding)]
         108  +
        deserializer.read_struct(&FOOCHOICE_SCHEMA, &mut |member, deser| {
         109  +
            result = ::std::option::Option::Some(match member.member_index() {
         110  +
                Some(0) => Self::Choice1(deser.read_string(member)?),
         111  +
                Some(1) => Self::Choice2(Box::new(crate::types::RecursiveOperationInputOutputNested1::deserialize(deser)?)),
         112  +
                _ => Self::Unknown,
         113  +
            });
         114  +
            Ok(())
         115  +
        })?;
         116  +
        result.ok_or_else(|| ::aws_smithy_schema::serde::SerdeError::custom("expected a union variant"))
         117  +
    }
         118  +
}

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_recursive_operation_input_output_nested1.rs

@@ -58,58 +157,165 @@
   78     78   
        &self,
   79     79   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   80     80   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   81     81   
        if let Some(ref val) = self.foo {
   82     82   
            ser.write_string(&RECURSIVEOPERATIONINPUTOUTPUTNESTED1_MEMBER_FOO, val)?;
   83     83   
        }
   84     84   
        if let Some(ref val) = self.nested {
   85     85   
            ser.write_struct(&RECURSIVEOPERATIONINPUTOUTPUTNESTED1_MEMBER_NESTED, val)?;
   86     86   
        }
   87     87   
        if let Some(ref val) = self.variant {
   88         -
            ser.write_null(&RECURSIVEOPERATIONINPUTOUTPUTNESTED1_MEMBER_VARIANT)?;
          88  +
            ser.write_struct(&RECURSIVEOPERATIONINPUTOUTPUTNESTED1_MEMBER_VARIANT, val)?;
   89     89   
        }
   90     90   
        Ok(())
   91     91   
    }
   92     92   
}
   93     93   
impl RecursiveOperationInputOutputNested1 {
   94     94   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   95         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   96         -
        deserializer: &mut D,
          95  +
    pub fn deserialize(
          96  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   97     97   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   98     98   
        #[allow(unused_variables, unused_mut)]
   99     99   
        let mut builder = Self::builder();
  100    100   
        #[allow(
  101    101   
            unused_variables,
  102    102   
            unreachable_code,
  103    103   
            clippy::single_match,
  104    104   
            clippy::match_single_binding,
  105    105   
            clippy::diverging_sub_expression
  106    106   
        )]
  107         -
        deserializer.read_struct(&RECURSIVEOPERATIONINPUTOUTPUTNESTED1_SCHEMA, (), |_, member, deser| {
         107  +
        deserializer.read_struct(&RECURSIVEOPERATIONINPUTOUTPUTNESTED1_SCHEMA, &mut |member, deser| {
  108    108   
            match member.member_index() {
  109    109   
                Some(0) => {
  110    110   
                    builder.foo = Some(deser.read_string(member)?);
  111    111   
                }
  112    112   
                Some(1) => {
  113    113   
                    builder.nested = Some(Box::new(crate::types::RecursiveOperationInputOutputNested2::deserialize(deser)?));
  114    114   
                }
  115    115   
                Some(2) => {
  116         -
                    builder.variant = Some({
  117         -
                        let _ = member;
  118         -
                        todo!("deserialize aggregate")
  119         -
                    });
         116  +
                    builder.variant = Some(crate::types::FooChoice::deserialize(deser)?);
  120    117   
                }
  121    118   
                _ => {}
  122    119   
            }
  123    120   
            Ok(())
  124    121   
        })?;
  125    122   
        Ok(builder.build())
  126    123   
    }
  127    124   
}
         125  +
impl RecursiveOperationInputOutputNested1 {
         126  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         127  +
    pub fn deserialize_with_response(
         128  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         129  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         130  +
        _status: u16,
         131  +
        _body: &[u8],
         132  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         133  +
        Self::deserialize(deserializer)
         134  +
    }
         135  +
}
  128    136   
impl RecursiveOperationInputOutputNested1 {
  129    137   
    /// Creates a new builder-style object to manufacture [`RecursiveOperationInputOutputNested1`](crate::types::RecursiveOperationInputOutputNested1).
  130    138   
    pub fn builder() -> crate::types::builders::RecursiveOperationInputOutputNested1Builder {
  131    139   
        crate::types::builders::RecursiveOperationInputOutputNested1Builder::default()
  132    140   
    }
  133    141   
}
  134    142   
  135    143   
/// A builder for [`RecursiveOperationInputOutputNested1`](crate::types::RecursiveOperationInputOutputNested1).
  136    144   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  137    145   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_recursive_operation_input_output_nested2.rs

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

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_simple_struct.rs

@@ -224,224 +394,394 @@
  244    244   
    "timestamp",
  245    245   
    9,
  246    246   
);
  247    247   
static SIMPLESTRUCT_MEMBER_ENUM: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  248    248   
    ::aws_smithy_schema::ShapeId::from_static(
  249    249   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$enum",
  250    250   
        "smithy.protocoltests.rpcv2Cbor",
  251    251   
        "SimpleStruct",
  252    252   
    ),
  253    253   
    ::aws_smithy_schema::ShapeType::String,
  254         -
    "r##enum",
         254  +
    "enum",
  255    255   
    10,
  256    256   
);
  257    257   
static SIMPLESTRUCT_MEMBER_REQUIRED_BLOB: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  258    258   
    ::aws_smithy_schema::ShapeId::from_static(
  259    259   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredBlob",
  260    260   
        "smithy.protocoltests.rpcv2Cbor",
  261    261   
        "SimpleStruct",
  262    262   
    ),
  263    263   
    ::aws_smithy_schema::ShapeType::Blob,
  264         -
    "required_blob",
         264  +
    "requiredBlob",
  265    265   
    11,
  266    266   
);
  267    267   
static SIMPLESTRUCT_MEMBER_REQUIRED_BOOLEAN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  268    268   
    ::aws_smithy_schema::ShapeId::from_static(
  269    269   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredBoolean",
  270    270   
        "smithy.protocoltests.rpcv2Cbor",
  271    271   
        "SimpleStruct",
  272    272   
    ),
  273    273   
    ::aws_smithy_schema::ShapeType::Boolean,
  274         -
    "required_boolean",
         274  +
    "requiredBoolean",
  275    275   
    12,
  276    276   
);
  277    277   
static SIMPLESTRUCT_MEMBER_REQUIRED_STRING: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  278    278   
    ::aws_smithy_schema::ShapeId::from_static(
  279    279   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredString",
  280    280   
        "smithy.protocoltests.rpcv2Cbor",
  281    281   
        "SimpleStruct",
  282    282   
    ),
  283    283   
    ::aws_smithy_schema::ShapeType::String,
  284         -
    "required_string",
         284  +
    "requiredString",
  285    285   
    13,
  286    286   
);
  287    287   
static SIMPLESTRUCT_MEMBER_REQUIRED_BYTE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  288    288   
    ::aws_smithy_schema::ShapeId::from_static(
  289    289   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredByte",
  290    290   
        "smithy.protocoltests.rpcv2Cbor",
  291    291   
        "SimpleStruct",
  292    292   
    ),
  293    293   
    ::aws_smithy_schema::ShapeType::Byte,
  294         -
    "required_byte",
         294  +
    "requiredByte",
  295    295   
    14,
  296    296   
);
  297    297   
static SIMPLESTRUCT_MEMBER_REQUIRED_SHORT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  298    298   
    ::aws_smithy_schema::ShapeId::from_static(
  299    299   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredShort",
  300    300   
        "smithy.protocoltests.rpcv2Cbor",
  301    301   
        "SimpleStruct",
  302    302   
    ),
  303    303   
    ::aws_smithy_schema::ShapeType::Short,
  304         -
    "required_short",
         304  +
    "requiredShort",
  305    305   
    15,
  306    306   
);
  307    307   
static SIMPLESTRUCT_MEMBER_REQUIRED_INTEGER: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  308    308   
    ::aws_smithy_schema::ShapeId::from_static(
  309    309   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredInteger",
  310    310   
        "smithy.protocoltests.rpcv2Cbor",
  311    311   
        "SimpleStruct",
  312    312   
    ),
  313    313   
    ::aws_smithy_schema::ShapeType::Integer,
  314         -
    "required_integer",
         314  +
    "requiredInteger",
  315    315   
    16,
  316    316   
);
  317    317   
static SIMPLESTRUCT_MEMBER_REQUIRED_LONG: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  318    318   
    ::aws_smithy_schema::ShapeId::from_static(
  319    319   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredLong",
  320    320   
        "smithy.protocoltests.rpcv2Cbor",
  321    321   
        "SimpleStruct",
  322    322   
    ),
  323    323   
    ::aws_smithy_schema::ShapeType::Long,
  324         -
    "required_long",
         324  +
    "requiredLong",
  325    325   
    17,
  326    326   
);
  327    327   
static SIMPLESTRUCT_MEMBER_REQUIRED_FLOAT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  328    328   
    ::aws_smithy_schema::ShapeId::from_static(
  329    329   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredFloat",
  330    330   
        "smithy.protocoltests.rpcv2Cbor",
  331    331   
        "SimpleStruct",
  332    332   
    ),
  333    333   
    ::aws_smithy_schema::ShapeType::Float,
  334         -
    "required_float",
         334  +
    "requiredFloat",
  335    335   
    18,
  336    336   
);
  337    337   
static SIMPLESTRUCT_MEMBER_REQUIRED_DOUBLE: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  338    338   
    ::aws_smithy_schema::ShapeId::from_static(
  339    339   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredDouble",
  340    340   
        "smithy.protocoltests.rpcv2Cbor",
  341    341   
        "SimpleStruct",
  342    342   
    ),
  343    343   
    ::aws_smithy_schema::ShapeType::Double,
  344         -
    "required_double",
         344  +
    "requiredDouble",
  345    345   
    19,
  346    346   
);
  347    347   
static SIMPLESTRUCT_MEMBER_REQUIRED_TIMESTAMP: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  348    348   
    ::aws_smithy_schema::ShapeId::from_static(
  349    349   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredTimestamp",
  350    350   
        "smithy.protocoltests.rpcv2Cbor",
  351    351   
        "SimpleStruct",
  352    352   
    ),
  353    353   
    ::aws_smithy_schema::ShapeType::Timestamp,
  354         -
    "required_timestamp",
         354  +
    "requiredTimestamp",
  355    355   
    20,
  356    356   
);
  357    357   
static SIMPLESTRUCT_MEMBER_REQUIRED_ENUM: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
  358    358   
    ::aws_smithy_schema::ShapeId::from_static(
  359    359   
        "smithy.protocoltests.rpcv2Cbor#SimpleStruct$requiredEnum",
  360    360   
        "smithy.protocoltests.rpcv2Cbor",
  361    361   
        "SimpleStruct",
  362    362   
    ),
  363    363   
    ::aws_smithy_schema::ShapeType::String,
  364         -
    "required_enum",
         364  +
    "requiredEnum",
  365    365   
    21,
  366    366   
);
  367    367   
static SIMPLESTRUCT_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
  368    368   
    SIMPLESTRUCT_SCHEMA_ID,
  369    369   
    ::aws_smithy_schema::ShapeType::Structure,
  370    370   
    &[
  371    371   
        &SIMPLESTRUCT_MEMBER_BLOB,
  372    372   
        &SIMPLESTRUCT_MEMBER_BOOLEAN,
  373    373   
        &SIMPLESTRUCT_MEMBER_STRING,
  374    374   
        &SIMPLESTRUCT_MEMBER_BYTE,
@@ -457,457 +529,529 @@
  477    477   
        }
  478    478   
        {
  479    479   
            let val = &self.required_enum;
  480    480   
            ser.write_string(&SIMPLESTRUCT_MEMBER_REQUIRED_ENUM, val.as_str())?;
  481    481   
        }
  482    482   
        Ok(())
  483    483   
    }
  484    484   
}
  485    485   
impl SimpleStruct {
  486    486   
    /// Deserializes this structure from a [`ShapeDeserializer`].
  487         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
  488         -
        deserializer: &mut D,
         487  +
    pub fn deserialize(
         488  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
  489    489   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
  490    490   
        #[allow(unused_variables, unused_mut)]
  491    491   
        let mut builder = Self::builder();
  492    492   
        #[allow(
  493    493   
            unused_variables,
  494    494   
            unreachable_code,
  495    495   
            clippy::single_match,
  496    496   
            clippy::match_single_binding,
  497    497   
            clippy::diverging_sub_expression
  498    498   
        )]
  499         -
        deserializer.read_struct(&SIMPLESTRUCT_SCHEMA, (), |_, member, deser| {
         499  +
        deserializer.read_struct(&SIMPLESTRUCT_SCHEMA, &mut |member, deser| {
  500    500   
            match member.member_index() {
  501    501   
                Some(0) => {
  502    502   
                    builder.blob = Some(deser.read_blob(member)?);
  503    503   
                }
  504    504   
                Some(1) => {
  505    505   
                    builder.boolean = Some(deser.read_boolean(member)?);
  506    506   
                }
  507    507   
                Some(2) => {
  508    508   
                    builder.string = Some(deser.read_string(member)?);
  509    509   
                }
@@ -541,541 +605,626 @@
  561    561   
                Some(20) => {
  562    562   
                    builder.required_timestamp = Some(deser.read_timestamp(member)?);
  563    563   
                }
  564    564   
                Some(21) => {
  565    565   
                    builder.required_enum = Some(crate::types::Suit::from(deser.read_string(member)?.as_str()));
  566    566   
                }
  567    567   
                _ => {}
  568    568   
            }
  569    569   
            Ok(())
  570    570   
        })?;
         571  +
        builder.required_blob = builder.required_blob.or(Some(::aws_smithy_types::Blob::new("")));
         572  +
        builder.required_boolean = builder.required_boolean.or(Some(false));
         573  +
        builder.required_string = builder.required_string.or(Some(String::new()));
         574  +
        builder.required_byte = builder.required_byte.or(Some(0i8));
         575  +
        builder.required_short = builder.required_short.or(Some(0i16));
         576  +
        builder.required_integer = builder.required_integer.or(Some(0i32));
         577  +
        builder.required_long = builder.required_long.or(Some(0i64));
         578  +
        builder.required_float = builder.required_float.or(Some(0.0f32));
         579  +
        builder.required_double = builder.required_double.or(Some(0.0f64));
         580  +
        builder.required_timestamp = builder.required_timestamp.or(Some(::aws_smithy_types::DateTime::from_secs(0)));
  571    581   
        builder
  572    582   
            .build()
  573    583   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  574    584   
    }
  575    585   
}
         586  +
impl SimpleStruct {
         587  +
    /// Deserializes this structure from a body deserializer and HTTP response.
         588  +
    pub fn deserialize_with_response(
         589  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         590  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
         591  +
        _status: u16,
         592  +
        _body: &[u8],
         593  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         594  +
        Self::deserialize(deserializer)
         595  +
    }
         596  +
}
  576    597   
impl SimpleStruct {
  577    598   
    /// Creates a new builder-style object to manufacture [`SimpleStruct`](crate::types::SimpleStruct).
  578    599   
    pub fn builder() -> crate::types::builders::SimpleStructBuilder {
  579    600   
        crate::types::builders::SimpleStructBuilder::default()
  580    601   
    }
  581    602   
}
  582    603   
  583    604   
/// A builder for [`SimpleStruct`](crate::types::SimpleStruct).
  584    605   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
  585    606   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_simple_union.rs

@@ -52,52 +0,196 @@
   72     72   
    }
   73     73   
    /// Returns true if this is a [`Unit`](crate::types::SimpleUnion::Unit).
   74     74   
    pub fn is_unit(&self) -> bool {
   75     75   
        self.as_unit().is_ok()
   76     76   
    }
   77     77   
    /// Returns true if the enum instance is the `Unknown` variant.
   78     78   
    pub fn is_unknown(&self) -> bool {
   79     79   
        matches!(self, Self::Unknown)
   80     80   
    }
   81     81   
}
          82  +
static SIMPLEUNION_SCHEMA_ID: ::aws_smithy_schema::ShapeId = ::aws_smithy_schema::ShapeId::from_static(
          83  +
    "smithy.protocoltests.rpcv2Cbor#SimpleUnion",
          84  +
    "smithy.protocoltests.rpcv2Cbor",
          85  +
    "SimpleUnion",
          86  +
);
          87  +
static SIMPLEUNION_MEMBER_BLOB: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          88  +
    ::aws_smithy_schema::ShapeId::from_static(
          89  +
        "smithy.protocoltests.rpcv2Cbor#SimpleUnion$blob",
          90  +
        "smithy.protocoltests.rpcv2Cbor",
          91  +
        "SimpleUnion",
          92  +
    ),
          93  +
    ::aws_smithy_schema::ShapeType::Blob,
          94  +
    "blob",
          95  +
    0,
          96  +
);
          97  +
static SIMPLEUNION_MEMBER_BOOLEAN: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          98  +
    ::aws_smithy_schema::ShapeId::from_static(
          99  +
        "smithy.protocoltests.rpcv2Cbor#SimpleUnion$boolean",
         100  +
        "smithy.protocoltests.rpcv2Cbor",
         101  +
        "SimpleUnion",
         102  +
    ),
         103  +
    ::aws_smithy_schema::ShapeType::Boolean,
         104  +
    "boolean",
         105  +
    1,
         106  +
);
         107  +
static SIMPLEUNION_MEMBER_STRING: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         108  +
    ::aws_smithy_schema::ShapeId::from_static(
         109  +
        "smithy.protocoltests.rpcv2Cbor#SimpleUnion$string",
         110  +
        "smithy.protocoltests.rpcv2Cbor",
         111  +
        "SimpleUnion",
         112  +
    ),
         113  +
    ::aws_smithy_schema::ShapeType::String,
         114  +
    "string",
         115  +
    2,
         116  +
);
         117  +
static SIMPLEUNION_MEMBER_UNIT: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
         118  +
    ::aws_smithy_schema::ShapeId::from_static(
         119  +
        "smithy.protocoltests.rpcv2Cbor#SimpleUnion$unit",
         120  +
        "smithy.protocoltests.rpcv2Cbor",
         121  +
        "SimpleUnion",
         122  +
    ),
         123  +
    ::aws_smithy_schema::ShapeType::Structure,
         124  +
    "unit",
         125  +
    3,
         126  +
);
         127  +
static SIMPLEUNION_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
         128  +
    SIMPLEUNION_SCHEMA_ID,
         129  +
    ::aws_smithy_schema::ShapeType::Union,
         130  +
    &[
         131  +
        &SIMPLEUNION_MEMBER_BLOB,
         132  +
        &SIMPLEUNION_MEMBER_BOOLEAN,
         133  +
        &SIMPLEUNION_MEMBER_STRING,
         134  +
        &SIMPLEUNION_MEMBER_UNIT,
         135  +
    ],
         136  +
);
         137  +
impl SimpleUnion {
         138  +
    /// The schema for this shape.
         139  +
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &SIMPLEUNION_SCHEMA;
         140  +
}
         141  +
impl ::aws_smithy_schema::serde::SerializableStruct for SimpleUnion {
         142  +
    #[allow(unused_variables, clippy::diverging_sub_expression)]
         143  +
    fn serialize_members(
         144  +
        &self,
         145  +
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
         146  +
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
         147  +
        match self {
         148  +
            Self::Blob(val) => {
         149  +
                ser.write_blob(&SIMPLEUNION_MEMBER_BLOB, val)?;
         150  +
            }
         151  +
            Self::Boolean(val) => {
         152  +
                ser.write_boolean(&SIMPLEUNION_MEMBER_BOOLEAN, *val)?;
         153  +
            }
         154  +
            Self::String(val) => {
         155  +
                ser.write_string(&SIMPLEUNION_MEMBER_STRING, val)?;
         156  +
            }
         157  +
            Self::Unit => {
         158  +
                struct Empty;
         159  +
                impl ::aws_smithy_schema::serde::SerializableStruct for Empty {
         160  +
                    fn serialize_members(
         161  +
                        &self,
         162  +
                        _ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
         163  +
                    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
         164  +
                        Ok(())
         165  +
                    }
         166  +
                }
         167  +
                ser.write_struct(&SIMPLEUNION_MEMBER_UNIT, &Empty)?;
         168  +
            }
         169  +
            Self::Unknown => return Err(::aws_smithy_schema::serde::SerdeError::custom("cannot serialize unknown union variant")),
         170  +
        }
         171  +
        Ok(())
         172  +
    }
         173  +
}
         174  +
impl SimpleUnion {
         175  +
    /// Deserializes this union from a [`ShapeDeserializer`].
         176  +
    pub fn deserialize(
         177  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         178  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         179  +
        let mut result: ::std::option::Option<Self> = ::std::option::Option::None;
         180  +
        #[allow(unused_variables, unreachable_code, clippy::single_match, clippy::match_single_binding)]
         181  +
        deserializer.read_struct(&SIMPLEUNION_SCHEMA, &mut |member, deser| {
         182  +
            result = ::std::option::Option::Some(match member.member_index() {
         183  +
                Some(0) => Self::Blob(deser.read_blob(member)?),
         184  +
                Some(1) => Self::Boolean(deser.read_boolean(member)?),
         185  +
                Some(2) => Self::String(deser.read_string(member)?),
         186  +
                Some(3) => {
         187  +
                    deser.read_struct(member, &mut |_, _| Ok(()))?;
         188  +
                    Self::Unit
         189  +
                }
         190  +
                _ => Self::Unknown,
         191  +
            });
         192  +
            Ok(())
         193  +
        })?;
         194  +
        result.ok_or_else(|| ::aws_smithy_schema::serde::SerdeError::custom("expected a union variant"))
         195  +
    }
         196  +
}

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_unit.rs

@@ -1,1 +61,72 @@
   14     14   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   15     15   
    fn serialize_members(
   16     16   
        &self,
   17     17   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   18     18   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   19     19   
        Ok(())
   20     20   
    }
   21     21   
}
   22     22   
impl Unit {
   23     23   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   24         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   25         -
        deserializer: &mut D,
          24  +
    pub fn deserialize(
          25  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   26     26   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   27     27   
        #[allow(unused_variables, unused_mut)]
   28     28   
        let mut builder = Self::builder();
   29     29   
        #[allow(
   30     30   
            unused_variables,
   31     31   
            unreachable_code,
   32     32   
            clippy::single_match,
   33     33   
            clippy::match_single_binding,
   34     34   
            clippy::diverging_sub_expression
   35     35   
        )]
   36         -
        deserializer.read_struct(&UNIT_SCHEMA, (), |_, member, deser| {
          36  +
        deserializer.read_struct(&UNIT_SCHEMA, &mut |member, deser| {
   37     37   
            match member.member_index() {
   38     38   
                _ => {}
   39     39   
            }
   40     40   
            Ok(())
   41     41   
        })?;
   42     42   
        Ok(builder.build())
   43     43   
    }
   44     44   
}
          45  +
impl Unit {
          46  +
    /// Deserializes this structure from a body deserializer and HTTP response.
          47  +
    pub fn deserialize_with_response(
          48  +
        _deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
          49  +
        _headers: &::aws_smithy_runtime_api::http::Headers,
          50  +
        _status: u16,
          51  +
        _body: &[u8],
          52  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
          53  +
        Ok(Self::builder().build())
          54  +
    }
          55  +
}
   45     56   
impl Unit {
   46     57   
    /// Creates a new builder-style object to manufacture [`Unit`](crate::types::Unit).
   47     58   
    pub fn builder() -> crate::types::builders::UnitBuilder {
   48     59   
        crate::types::builders::UnitBuilder::default()
   49     60   
    }
   50     61   
}
   51     62   
   52     63   
/// A builder for [`Unit`](crate::types::Unit).
   53     64   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   54     65   
#[non_exhaustive]

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/_unit_union.rs

@@ -22,22 +0,142 @@
   42     42   
    }
   43     43   
    /// Returns true if this is a [`UnitB`](crate::types::UnitUnion::UnitB).
   44     44   
    pub fn is_unit_b(&self) -> bool {
   45     45   
        self.as_unit_b().is_ok()
   46     46   
    }
   47     47   
    /// Returns true if the enum instance is the `Unknown` variant.
   48     48   
    pub fn is_unknown(&self) -> bool {
   49     49   
        matches!(self, Self::Unknown)
   50     50   
    }
   51     51   
}
          52  +
static UNITUNION_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
          53  +
    ::aws_smithy_schema::ShapeId::from_static("smithy.protocoltests.rpcv2Cbor#UnitUnion", "smithy.protocoltests.rpcv2Cbor", "UnitUnion");
          54  +
static UNITUNION_MEMBER_UNITA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          55  +
    ::aws_smithy_schema::ShapeId::from_static(
          56  +
        "smithy.protocoltests.rpcv2Cbor#UnitUnion$unitA",
          57  +
        "smithy.protocoltests.rpcv2Cbor",
          58  +
        "UnitUnion",
          59  +
    ),
          60  +
    ::aws_smithy_schema::ShapeType::Structure,
          61  +
    "unitA",
          62  +
    0,
          63  +
);
          64  +
static UNITUNION_MEMBER_UNITB: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
          65  +
    ::aws_smithy_schema::ShapeId::from_static(
          66  +
        "smithy.protocoltests.rpcv2Cbor#UnitUnion$unitB",
          67  +
        "smithy.protocoltests.rpcv2Cbor",
          68  +
        "UnitUnion",
          69  +
    ),
          70  +
    ::aws_smithy_schema::ShapeType::Structure,
          71  +
    "unitB",
          72  +
    1,
          73  +
);
          74  +
static UNITUNION_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
          75  +
    UNITUNION_SCHEMA_ID,
          76  +
    ::aws_smithy_schema::ShapeType::Union,
          77  +
    &[&UNITUNION_MEMBER_UNITA, &UNITUNION_MEMBER_UNITB],
          78  +
);
          79  +
impl UnitUnion {
          80  +
    /// The schema for this shape.
          81  +
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &UNITUNION_SCHEMA;
          82  +
}
          83  +
impl ::aws_smithy_schema::serde::SerializableStruct for UnitUnion {
          84  +
    #[allow(unused_variables, clippy::diverging_sub_expression)]
          85  +
    fn serialize_members(
          86  +
        &self,
          87  +
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
          88  +
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
          89  +
        match self {
          90  +
            Self::UnitA => {
          91  +
                struct Empty;
          92  +
                impl ::aws_smithy_schema::serde::SerializableStruct for Empty {
          93  +
                    fn serialize_members(
          94  +
                        &self,
          95  +
                        _ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
          96  +
                    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
          97  +
                        Ok(())
          98  +
                    }
          99  +
                }
         100  +
                ser.write_struct(&UNITUNION_MEMBER_UNITA, &Empty)?;
         101  +
            }
         102  +
            Self::UnitB => {
         103  +
                struct Empty;
         104  +
                impl ::aws_smithy_schema::serde::SerializableStruct for Empty {
         105  +
                    fn serialize_members(
         106  +
                        &self,
         107  +
                        _ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
         108  +
                    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
         109  +
                        Ok(())
         110  +
                    }
         111  +
                }
         112  +
                ser.write_struct(&UNITUNION_MEMBER_UNITB, &Empty)?;
         113  +
            }
         114  +
            Self::Unknown => return Err(::aws_smithy_schema::serde::SerdeError::custom("cannot serialize unknown union variant")),
         115  +
        }
         116  +
        Ok(())
         117  +
    }
         118  +
}
         119  +
impl UnitUnion {
         120  +
    /// Deserializes this union from a [`ShapeDeserializer`].
         121  +
    pub fn deserialize(
         122  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
         123  +
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
         124  +
        let mut result: ::std::option::Option<Self> = ::std::option::Option::None;
         125  +
        #[allow(unused_variables, unreachable_code, clippy::single_match, clippy::match_single_binding)]
         126  +
        deserializer.read_struct(&UNITUNION_SCHEMA, &mut |member, deser| {
         127  +
            result = ::std::option::Option::Some(match member.member_index() {
         128  +
                Some(0) => {
         129  +
                    deser.read_struct(member, &mut |_, _| Ok(()))?;
         130  +
                    Self::UnitA
         131  +
                }
         132  +
                Some(1) => {
         133  +
                    deser.read_struct(member, &mut |_, _| Ok(()))?;
         134  +
                    Self::UnitB
         135  +
                }
         136  +
                _ => Self::Unknown,
         137  +
            });
         138  +
            Ok(())
         139  +
        })?;
         140  +
        result.ok_or_else(|| ::aws_smithy_schema::serde::SerdeError::custom("expected a union variant"))
         141  +
    }
         142  +
}

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

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

tmp-codegen-diff/codegen-client-test/rpcv2Cbor_extras/rust-client-codegen/src/types/error/_validation_exception.rs

@@ -6,6 +142,151 @@
   26     26   
    "message",
   27     27   
    0,
   28     28   
);
   29     29   
static VALIDATIONERROR_MEMBER_FIELD_LIST: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
   30     30   
    ::aws_smithy_schema::ShapeId::from_static(
   31     31   
        "smithy.framework#ValidationException$fieldList",
   32     32   
        "smithy.framework",
   33     33   
        "ValidationException",
   34     34   
    ),
   35     35   
    ::aws_smithy_schema::ShapeType::List,
   36         -
    "field_list",
          36  +
    "fieldList",
   37     37   
    1,
   38     38   
);
   39     39   
static VALIDATIONERROR_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
   40     40   
    VALIDATIONERROR_SCHEMA_ID,
   41     41   
    ::aws_smithy_schema::ShapeType::Structure,
   42     42   
    &[&VALIDATIONERROR_MEMBER_MESSAGE, &VALIDATIONERROR_MEMBER_FIELD_LIST],
   43     43   
);
   44     44   
impl ValidationError {
   45     45   
    /// The schema for this shape.
   46     46   
    pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &VALIDATIONERROR_SCHEMA;
   47     47   
}
   48     48   
impl ::aws_smithy_schema::serde::SerializableStruct for ValidationError {
   49     49   
    #[allow(unused_variables, clippy::diverging_sub_expression)]
   50     50   
    fn serialize_members(
   51     51   
        &self,
   52     52   
        ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
   53     53   
    ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
   54     54   
        {
   55     55   
            let val = &self.message;
   56     56   
            ser.write_string(&VALIDATIONERROR_MEMBER_MESSAGE, val)?;
   57     57   
        }
   58     58   
        if let Some(ref val) = self.field_list {
   59     59   
            ser.write_list(
   60     60   
                &VALIDATIONERROR_MEMBER_FIELD_LIST,
   61     61   
                &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
   62     62   
                    for item in val {
   63     63   
                        ser.write_struct(crate::types::ValidationExceptionField::SCHEMA, item)?;
   64     64   
                    }
   65     65   
                    Ok(())
   66     66   
                },
   67     67   
            )?;
   68     68   
        }
   69     69   
        Ok(())
   70     70   
    }
   71     71   
}
   72     72   
impl ValidationError {
   73     73   
    /// Deserializes this structure from a [`ShapeDeserializer`].
   74         -
    pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
   75         -
        deserializer: &mut D,
          74  +
    pub fn deserialize(
          75  +
        deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
   76     76   
    ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
   77     77   
        #[allow(unused_variables, unused_mut)]
   78     78   
        let mut builder = Self::builder();
   79     79   
        #[allow(
   80     80   
            unused_variables,
   81     81   
            unreachable_code,
   82     82   
            clippy::single_match,
   83     83   
            clippy::match_single_binding,
   84     84   
            clippy::diverging_sub_expression
   85     85   
        )]
   86         -
        deserializer.read_struct(&VALIDATIONERROR_SCHEMA, (), |_, member, deser| {
          86  +
        deserializer.read_struct(&VALIDATIONERROR_SCHEMA, &mut |member, deser| {
   87     87   
            match member.member_index() {
   88     88   
                Some(0) => {
   89     89   
                    builder.message = Some(deser.read_string(member)?);
   90     90   
                }
   91     91   
                Some(1) => {
   92     92   
                    builder.field_list = Some({
   93         -
                        let container = if let Some(cap) = deser.container_size() {
   94         -
                            Vec::with_capacity(cap)
   95         -
                        } else {
   96         -
                            Vec::new()
   97         -
                        };
   98         -
                        deser.read_list(member, container, |mut list, deser| {
   99         -
                            list.push(crate::types::ValidationExceptionField::deserialize(deser)?);
  100         -
                            Ok(list)
  101         -
                        })?
          93  +
                        let mut container = Vec::new();
          94  +
                        deser.read_list(member, &mut |deser| {
          95  +
                            container.push(crate::types::ValidationExceptionField::deserialize(deser)?);
          96  +
                            Ok(())
          97  +
                        })?;
          98  +
                        container
  102     99   
                    });
  103    100   
                }
  104    101   
                _ => {}
  105    102   
            }
  106    103   
            Ok(())
  107    104   
        })?;
         105  +
        builder.message = builder.message.or(Some(String::new()));
  108    106   
        builder
  109    107   
            .build()
  110    108   
            .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
  111    109   
    }
  112    110   
}
         111  +
impl ValidationError {
         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  +
}
  113    122   
impl ValidationError {
  114    123   
    /// Returns the error message.
  115    124   
    pub fn message(&self) -> &str {
  116    125   
        &self.message
  117    126   
    }
  118    127   
}
  119    128   
impl ::std::fmt::Display for ValidationError {
  120    129   
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  121    130   
        ::std::write!(f, "ValidationError [ValidationException]")?;
  122    131   
        {