Client Test

Client Test

rev. dfb5149b65b7bcc09edd15b8e071ad43b5ac5943

Files changed:

tmp-codegen-diff/codegen-client-test/aws_query/rust-client-codegen/src/types/_xml_namespace_nested.rs

@@ -1,1 +78,140 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* StructureGenerator.kt:197 */
    2      3   
#[allow(missing_docs)] // documentation missing in model
           4  +
/* RustType.kt:516 */
    3      5   
#[non_exhaustive]
           6  +
/* RustType.kt:516 */
    4      7   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
    5         -
pub struct XmlNamespaceNested {
           8  +
pub /* StructureGenerator.kt:201 */ struct XmlNamespaceNested {
           9  +
    /* StructureGenerator.kt:231 */
    6     10   
    #[allow(missing_docs)] // documentation missing in model
    7     11   
    pub foo: ::std::option::Option<::std::string::String>,
          12  +
    /* StructureGenerator.kt:231 */
    8     13   
    #[allow(missing_docs)] // documentation missing in model
    9     14   
    pub values: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
          15  +
    /* StructureGenerator.kt:201 */
   10     16   
}
          17  +
/* StructureGenerator.kt:135 */
   11     18   
impl XmlNamespaceNested {
          19  +
    /* StructureGenerator.kt:231 */
   12     20   
    #[allow(missing_docs)] // documentation missing in model
          21  +
                           /* StructureGenerator.kt:166 */
   13     22   
    pub fn foo(&self) -> ::std::option::Option<&str> {
          23  +
        /* StructureGenerator.kt:169 */
   14     24   
        self.foo.as_deref()
          25  +
        /* StructureGenerator.kt:166 */
   15     26   
    }
          27  +
    /* StructureGenerator.kt:231 */
   16     28   
    #[allow(missing_docs)] // documentation missing in model
   17         -
    ///
   18         -
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.values.is_none()`.
          29  +
    /// /* StructureGenerator.kt:162 */
          30  +
    /// /* StructureGenerator.kt:163 */If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.values.is_none()`.
          31  +
    /* StructureGenerator.kt:166 */
   19     32   
    pub fn values(&self) -> &[::std::string::String] {
   20         -
        self.values.as_deref().unwrap_or_default()
          33  +
        /* StructureGenerator.kt:169 */
          34  +
        self.values
          35  +
            .as_deref()
          36  +
            /* StructureGenerator.kt:175 */
          37  +
            .unwrap_or_default()
          38  +
        /* StructureGenerator.kt:166 */
   21     39   
    }
          40  +
    /* StructureGenerator.kt:135 */
   22     41   
}
          42  +
/* ClientCodegenVisitor.kt:237 */
   23     43   
impl XmlNamespaceNested {
   24         -
    /// Creates a new builder-style object to manufacture [`XmlNamespaceNested`](crate::types::XmlNamespaceNested).
          44  +
    /// /* BuilderGenerator.kt:173 */Creates a new builder-style object to manufacture [`XmlNamespaceNested`](crate::types::XmlNamespaceNested).
          45  +
    /* BuilderGenerator.kt:175 */
   25     46   
    pub fn builder() -> crate::types::builders::XmlNamespaceNestedBuilder {
          47  +
        /* BuilderGenerator.kt:176 */
   26     48   
        crate::types::builders::XmlNamespaceNestedBuilder::default()
          49  +
        /* BuilderGenerator.kt:175 */
   27     50   
    }
          51  +
    /* ClientCodegenVisitor.kt:237 */
   28     52   
}
   29     53   
   30         -
/// A builder for [`XmlNamespaceNested`](crate::types::XmlNamespaceNested).
          54  +
/// /* BuilderGenerator.kt:342 */A builder for [`XmlNamespaceNested`](crate::types::XmlNamespaceNested).
          55  +
/* RustType.kt:516 */
   31     56   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
          57  +
/* RustType.kt:516 */
   32     58   
#[non_exhaustive]
          59  +
/* BuilderGenerator.kt:345 */
   33     60   
pub struct XmlNamespaceNestedBuilder {
   34         -
    pub(crate) foo: ::std::option::Option<::std::string::String>,
          61  +
    /* BuilderGenerator.kt:275 */ pub(crate) foo: ::std::option::Option<::std::string::String>,
          62  +
    /* BuilderGenerator.kt:275 */
   35     63   
    pub(crate) values: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
          64  +
    /* BuilderGenerator.kt:345 */
   36     65   
}
          66  +
/* BuilderGenerator.kt:355 */
   37     67   
impl XmlNamespaceNestedBuilder {
          68  +
    /* BuilderGenerator.kt:286 */
   38     69   
    #[allow(missing_docs)] // documentation missing in model
          70  +
                           /* BuilderGenerator.kt:291 */
   39     71   
    pub fn foo(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
          72  +
        /* BuilderGenerator.kt:292 */
   40     73   
        self.foo = ::std::option::Option::Some(input.into());
          74  +
        /* BuilderGenerator.kt:293 */
   41     75   
        self
          76  +
        /* BuilderGenerator.kt:291 */
   42     77   
    }
          78  +
    /* BuilderGenerator.kt:312 */
   43     79   
    #[allow(missing_docs)] // documentation missing in model
          80  +
                           /* BuilderGenerator.kt:314 */
   44     81   
    pub fn set_foo(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
          82  +
        /* BuilderGenerator.kt:315 */
   45     83   
        self.foo = input;
   46     84   
        self
          85  +
        /* BuilderGenerator.kt:314 */
   47     86   
    }
          87  +
    /* BuilderGenerator.kt:334 */
   48     88   
    #[allow(missing_docs)] // documentation missing in model
          89  +
                           /* BuilderGenerator.kt:336 */
   49     90   
    pub fn get_foo(&self) -> &::std::option::Option<::std::string::String> {
          91  +
        /* BuilderGenerator.kt:337 */
   50     92   
        &self.foo
          93  +
        /* BuilderGenerator.kt:336 */
   51     94   
    }
   52         -
    /// Appends an item to `values`.
          95  +
    /// /* BuilderGenerator.kt:410 */Appends an item to `values`.
          96  +
    /* BuilderGenerator.kt:411 */
   53     97   
    ///
   54         -
    /// To override the contents of this collection use [`set_values`](Self::set_values).
          98  +
    /// /* BuilderGenerator.kt:412 */To override the contents of this collection use [`set_values`](Self::set_values).
          99  +
    /* BuilderGenerator.kt:413 */
   55    100   
    ///
         101  +
    /* BuilderGenerator.kt:418 */
   56    102   
    pub fn values(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
         103  +
        /* BuilderGenerator.kt:419 */
   57    104   
        let mut v = self.values.unwrap_or_default();
   58    105   
        v.push(input.into());
   59    106   
        self.values = ::std::option::Option::Some(v);
   60    107   
        self
         108  +
        /* BuilderGenerator.kt:418 */
   61    109   
    }
         110  +
    /* BuilderGenerator.kt:312 */
   62    111   
    #[allow(missing_docs)] // documentation missing in model
         112  +
                           /* BuilderGenerator.kt:314 */
   63    113   
    pub fn set_values(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
         114  +
        /* BuilderGenerator.kt:315 */
   64    115   
        self.values = input;
   65    116   
        self
         117  +
        /* BuilderGenerator.kt:314 */
   66    118   
    }
         119  +
    /* BuilderGenerator.kt:334 */
   67    120   
    #[allow(missing_docs)] // documentation missing in model
         121  +
                           /* BuilderGenerator.kt:336 */
   68    122   
    pub fn get_values(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
         123  +
        /* BuilderGenerator.kt:337 */
   69    124   
        &self.values
         125  +
        /* BuilderGenerator.kt:336 */
   70    126   
    }
   71         -
    /// Consumes the builder and constructs a [`XmlNamespaceNested`](crate::types::XmlNamespaceNested).
         127  +
    /// /* BuilderGenerator.kt:240 */Consumes the builder and constructs a [`XmlNamespaceNested`](crate::types::XmlNamespaceNested).
         128  +
    /* BuilderGenerator.kt:253 */
   72    129   
    pub fn build(self) -> crate::types::XmlNamespaceNested {
         130  +
        /* BuilderGenerator.kt:477 */
   73    131   
        crate::types::XmlNamespaceNested {
   74         -
            foo: self.foo,
         132  +
            /* BuilderGenerator.kt:481 */ foo: self.foo,
         133  +
            /* BuilderGenerator.kt:481 */
   75    134   
            values: self.values,
         135  +
            /* BuilderGenerator.kt:477 */
   76    136   
        }
         137  +
        /* BuilderGenerator.kt:253 */
   77    138   
    }
         139  +
    /* BuilderGenerator.kt:355 */
   78    140   
}

tmp-codegen-diff/codegen-client-test/aws_query/rust-client-codegen/src/types/builders.rs

@@ -1,1 +18,27 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* CodegenDelegator.kt:255 */
    2      3   
pub use crate::types::_complex_nested_error_data::ComplexNestedErrorDataBuilder;
    3      4   
           5  +
/* CodegenDelegator.kt:255 */
    4      6   
pub use crate::types::_xml_namespace_nested::XmlNamespaceNestedBuilder;
    5      7   
           8  +
/* CodegenDelegator.kt:255 */
    6      9   
pub use crate::types::_recursive_xml_shapes_output_nested1::RecursiveXmlShapesOutputNested1Builder;
    7     10   
          11  +
/* CodegenDelegator.kt:255 */
    8     12   
pub use crate::types::_recursive_xml_shapes_output_nested2::RecursiveXmlShapesOutputNested2Builder;
    9     13   
          14  +
/* CodegenDelegator.kt:255 */
   10     15   
pub use crate::types::_structure_list_member::StructureListMemberBuilder;
   11     16   
          17  +
/* CodegenDelegator.kt:255 */
   12     18   
pub use crate::types::_greeting_struct::GreetingStructBuilder;
   13     19   
          20  +
/* CodegenDelegator.kt:255 */
   14     21   
pub use crate::types::_nested_struct_with_map::NestedStructWithMapBuilder;
   15     22   
          23  +
/* CodegenDelegator.kt:255 */
   16     24   
pub use crate::types::_nested_struct_with_list::NestedStructWithListBuilder;
   17     25   
          26  +
/* CodegenDelegator.kt:255 */
   18     27   
pub use crate::types::_struct_arg::StructArgBuilder;

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

@@ -1,1 +15,21 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* CodegenDelegator.kt:255 */
    2      3   
pub use crate::types::error::_custom_code_error::CustomCodeError;
    3      4   
           5  +
/* CodegenDelegator.kt:255 */
    4      6   
pub use crate::types::error::_complex_error::ComplexError;
    5      7   
           8  +
/* CodegenDelegator.kt:255 */
    6      9   
pub use crate::types::error::_invalid_greeting::InvalidGreeting;
    7     10   
          11  +
/* RustModule.kt:172 */
    8     12   
mod _complex_error;
    9     13   
          14  +
/* RustModule.kt:172 */
   10     15   
mod _custom_code_error;
   11     16   
          17  +
/* RustModule.kt:172 */
   12     18   
mod _invalid_greeting;
   13     19   
   14         -
/// Builders
          20  +
/// /* CodegenDelegator.kt:51 */Builders
   15     21   
pub mod builders;

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

@@ -1,1 +99,171 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2         -
    3         -
/// This error is thrown when a request is invalid.
           2  +
/* StructureGenerator.kt:197 */
           3  +
/// /* StructureGenerator.kt:197 */This error is thrown when a request is invalid.
           4  +
/* RustType.kt:516 */
    4      5   
#[non_exhaustive]
           6  +
/* RustType.kt:516 */
    5      7   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
    6         -
pub struct ComplexError {
           8  +
pub /* StructureGenerator.kt:201 */ struct ComplexError {
           9  +
    /* StructureGenerator.kt:231 */
    7     10   
    #[allow(missing_docs)] // documentation missing in model
    8     11   
    pub top_level: ::std::option::Option<::std::string::String>,
          12  +
    /* StructureGenerator.kt:231 */
    9     13   
    #[allow(missing_docs)] // documentation missing in model
   10     14   
    pub nested: ::std::option::Option<crate::types::ComplexNestedErrorData>,
   11         -
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
          15  +
    /* ErrorGenerator.kt:53 */ pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
          16  +
    /* StructureGenerator.kt:201 */
   12     17   
}
          18  +
/* StructureGenerator.kt:135 */
   13     19   
impl ComplexError {
          20  +
    /* StructureGenerator.kt:231 */
   14     21   
    #[allow(missing_docs)] // documentation missing in model
          22  +
                           /* StructureGenerator.kt:166 */
   15     23   
    pub fn top_level(&self) -> ::std::option::Option<&str> {
          24  +
        /* StructureGenerator.kt:169 */
   16     25   
        self.top_level.as_deref()
          26  +
        /* StructureGenerator.kt:166 */
   17     27   
    }
          28  +
    /* StructureGenerator.kt:231 */
   18     29   
    #[allow(missing_docs)] // documentation missing in model
          30  +
                           /* StructureGenerator.kt:166 */
   19     31   
    pub fn nested(&self) -> ::std::option::Option<&crate::types::ComplexNestedErrorData> {
          32  +
        /* StructureGenerator.kt:170 */
   20     33   
        self.nested.as_ref()
          34  +
        /* StructureGenerator.kt:166 */
   21     35   
    }
          36  +
    /* StructureGenerator.kt:135 */
          37  +
}
          38  +
/* ErrorImplGenerator.kt:99 */
          39  +
impl ComplexError {
          40  +
    /* ErrorImplGenerator.kt:99 */
   22     41   
}
   23         -
impl ComplexError {}
          42  +
/* ErrorImplGenerator.kt:153 */
   24     43   
impl ::std::fmt::Display for ComplexError {
          44  +
    /* ErrorImplGenerator.kt:154 */
   25     45   
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
          46  +
        /* ErrorImplGenerator.kt:161 */
   26     47   
        ::std::write!(f, "ComplexError")?;
          48  +
        /* ErrorImplGenerator.kt:171 */
   27     49   
        Ok(())
          50  +
        /* ErrorImplGenerator.kt:154 */
   28     51   
    }
          52  +
    /* ErrorImplGenerator.kt:153 */
   29     53   
}
          54  +
/* ErrorImplGenerator.kt:175 */
   30     55   
impl ::std::error::Error for ComplexError {}
          56  +
/* ErrorGenerator.kt:77 */
   31     57   
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ComplexError {
          58  +
    /* ErrorGenerator.kt:78 */
   32     59   
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
   33     60   
        &self.meta
   34     61   
    }
          62  +
    /* ErrorGenerator.kt:77 */
   35     63   
}
          64  +
/* ErrorGenerator.kt:81 */
   36     65   
impl ComplexError {
   37         -
    /// Creates a new builder-style object to manufacture [`ComplexError`](crate::types::error::ComplexError).
          66  +
    /// /* BuilderGenerator.kt:173 */Creates a new builder-style object to manufacture [`ComplexError`](crate::types::error::ComplexError).
          67  +
    /* BuilderGenerator.kt:175 */
   38     68   
    pub fn builder() -> crate::types::error::builders::ComplexErrorBuilder {
          69  +
        /* BuilderGenerator.kt:176 */
   39     70   
        crate::types::error::builders::ComplexErrorBuilder::default()
          71  +
        /* BuilderGenerator.kt:175 */
   40     72   
    }
          73  +
    /* ErrorGenerator.kt:81 */
   41     74   
}
   42     75   
   43         -
/// A builder for [`ComplexError`](crate::types::error::ComplexError).
          76  +
/// /* BuilderGenerator.kt:342 */A builder for [`ComplexError`](crate::types::error::ComplexError).
          77  +
/* RustType.kt:516 */
   44     78   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
          79  +
/* RustType.kt:516 */
   45     80   
#[non_exhaustive]
          81  +
/* BuilderGenerator.kt:345 */
   46     82   
pub struct ComplexErrorBuilder {
   47         -
    pub(crate) top_level: ::std::option::Option<::std::string::String>,
   48         -
    pub(crate) nested: ::std::option::Option<crate::types::ComplexNestedErrorData>,
   49         -
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
          83  +
    /* BuilderGenerator.kt:275 */ pub(crate) top_level: ::std::option::Option<::std::string::String>,
          84  +
    /* BuilderGenerator.kt:275 */ pub(crate) nested: ::std::option::Option<crate::types::ComplexNestedErrorData>,
          85  +
    /* ErrorGenerator.kt:97 */ meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
          86  +
    /* BuilderGenerator.kt:345 */
   50     87   
}
          88  +
/* BuilderGenerator.kt:355 */
   51     89   
impl ComplexErrorBuilder {
          90  +
    /* BuilderGenerator.kt:286 */
   52     91   
    #[allow(missing_docs)] // documentation missing in model
          92  +
                           /* BuilderGenerator.kt:291 */
   53     93   
    pub fn top_level(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
          94  +
        /* BuilderGenerator.kt:292 */
   54     95   
        self.top_level = ::std::option::Option::Some(input.into());
          96  +
        /* BuilderGenerator.kt:293 */
   55     97   
        self
          98  +
        /* BuilderGenerator.kt:291 */
   56     99   
    }
         100  +
    /* BuilderGenerator.kt:312 */
   57    101   
    #[allow(missing_docs)] // documentation missing in model
         102  +
                           /* BuilderGenerator.kt:314 */
   58    103   
    pub fn set_top_level(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
         104  +
        /* BuilderGenerator.kt:315 */
   59    105   
        self.top_level = input;
   60    106   
        self
         107  +
        /* BuilderGenerator.kt:314 */
   61    108   
    }
         109  +
    /* BuilderGenerator.kt:334 */
   62    110   
    #[allow(missing_docs)] // documentation missing in model
         111  +
                           /* BuilderGenerator.kt:336 */
   63    112   
    pub fn get_top_level(&self) -> &::std::option::Option<::std::string::String> {
         113  +
        /* BuilderGenerator.kt:337 */
   64    114   
        &self.top_level
         115  +
        /* BuilderGenerator.kt:336 */
   65    116   
    }
         117  +
    /* BuilderGenerator.kt:286 */
   66    118   
    #[allow(missing_docs)] // documentation missing in model
         119  +
                           /* BuilderGenerator.kt:291 */
   67    120   
    pub fn nested(mut self, input: crate::types::ComplexNestedErrorData) -> Self {
         121  +
        /* BuilderGenerator.kt:292 */
   68    122   
        self.nested = ::std::option::Option::Some(input);
         123  +
        /* BuilderGenerator.kt:293 */
   69    124   
        self
         125  +
        /* BuilderGenerator.kt:291 */
   70    126   
    }
         127  +
    /* BuilderGenerator.kt:312 */
   71    128   
    #[allow(missing_docs)] // documentation missing in model
         129  +
                           /* BuilderGenerator.kt:314 */
   72    130   
    pub fn set_nested(mut self, input: ::std::option::Option<crate::types::ComplexNestedErrorData>) -> Self {
         131  +
        /* BuilderGenerator.kt:315 */
   73    132   
        self.nested = input;
   74    133   
        self
         134  +
        /* BuilderGenerator.kt:314 */
   75    135   
    }
         136  +
    /* BuilderGenerator.kt:334 */
   76    137   
    #[allow(missing_docs)] // documentation missing in model
         138  +
                           /* BuilderGenerator.kt:336 */
   77    139   
    pub fn get_nested(&self) -> &::std::option::Option<crate::types::ComplexNestedErrorData> {
         140  +
        /* BuilderGenerator.kt:337 */
   78    141   
        &self.nested
         142  +
        /* BuilderGenerator.kt:336 */
   79    143   
    }
         144  +
    /* ErrorGenerator.kt:101 */
   80    145   
    /// Sets error metadata
   81    146   
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
   82    147   
        self.meta = Some(meta);
   83    148   
        self
   84    149   
    }
   85    150   
   86    151   
    /// Sets error metadata
   87    152   
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
   88    153   
        self.meta = meta;
   89    154   
        self
   90    155   
    }
   91         -
    /// Consumes the builder and constructs a [`ComplexError`](crate::types::error::ComplexError).
         156  +
    /// /* BuilderGenerator.kt:240 */Consumes the builder and constructs a [`ComplexError`](crate::types::error::ComplexError).
         157  +
    /* BuilderGenerator.kt:253 */
   92    158   
    pub fn build(self) -> crate::types::error::ComplexError {
         159  +
        /* BuilderGenerator.kt:477 */
   93    160   
        crate::types::error::ComplexError {
   94         -
            top_level: self.top_level,
         161  +
            /* BuilderGenerator.kt:481 */ top_level: self.top_level,
         162  +
            /* BuilderGenerator.kt:481 */
   95    163   
            nested: self.nested,
         164  +
            /* ErrorGenerator.kt:120 */
   96    165   
            meta: self.meta.unwrap_or_default(),
         166  +
            /* BuilderGenerator.kt:477 */
   97    167   
        }
         168  +
        /* BuilderGenerator.kt:253 */
   98    169   
    }
         170  +
    /* BuilderGenerator.kt:355 */
   99    171   
}

tmp-codegen-diff/codegen-client-test/aws_query/rust-client-codegen/src/types/error/_custom_code_error.rs

@@ -1,1 +80,133 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* StructureGenerator.kt:197 */
    2      3   
#[allow(missing_docs)] // documentation missing in model
           4  +
/* RustType.kt:516 */
    3      5   
#[non_exhaustive]
           6  +
/* RustType.kt:516 */
    4      7   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
    5         -
pub struct CustomCodeError {
           8  +
pub /* StructureGenerator.kt:201 */ struct CustomCodeError {
           9  +
    /* StructureGenerator.kt:231 */
    6     10   
    #[allow(missing_docs)] // documentation missing in model
    7     11   
    pub message: ::std::option::Option<::std::string::String>,
    8         -
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
          12  +
    /* ErrorGenerator.kt:53 */ pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
          13  +
    /* StructureGenerator.kt:201 */
    9     14   
}
          15  +
/* ErrorImplGenerator.kt:99 */
   10     16   
impl CustomCodeError {
          17  +
    /* ErrorImplGenerator.kt:128 */
   11     18   
    /// Returns the error message.
   12     19   
    pub fn message(&self) -> ::std::option::Option<&str> {
   13     20   
        self.message.as_deref()
   14     21   
    }
          22  +
    /* ErrorImplGenerator.kt:99 */
   15     23   
}
          24  +
/* ErrorImplGenerator.kt:153 */
   16     25   
impl ::std::fmt::Display for CustomCodeError {
          26  +
    /* ErrorImplGenerator.kt:154 */
   17     27   
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
          28  +
        /* ErrorImplGenerator.kt:161 */
   18     29   
        ::std::write!(f, "CustomCodeError")?;
          30  +
        /* ErrorImplGenerator.kt:166 */
   19     31   
        if let ::std::option::Option::Some(inner_1) = &self.message {
          32  +
            /* ErrorImplGenerator.kt:166 */
   20     33   
            {
          34  +
                /* ErrorImplGenerator.kt:167 */
   21     35   
                ::std::write!(f, ": {}", inner_1)?;
          36  +
                /* ErrorImplGenerator.kt:166 */
   22     37   
            }
          38  +
            /* ErrorImplGenerator.kt:166 */
   23     39   
        }
          40  +
        /* ErrorImplGenerator.kt:171 */
   24     41   
        Ok(())
          42  +
        /* ErrorImplGenerator.kt:154 */
   25     43   
    }
          44  +
    /* ErrorImplGenerator.kt:153 */
   26     45   
}
          46  +
/* ErrorImplGenerator.kt:175 */
   27     47   
impl ::std::error::Error for CustomCodeError {}
          48  +
/* ErrorGenerator.kt:77 */
   28     49   
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CustomCodeError {
          50  +
    /* ErrorGenerator.kt:78 */
   29     51   
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
   30     52   
        &self.meta
   31     53   
    }
          54  +
    /* ErrorGenerator.kt:77 */
   32     55   
}
          56  +
/* ErrorGenerator.kt:81 */
   33     57   
impl CustomCodeError {
   34         -
    /// Creates a new builder-style object to manufacture [`CustomCodeError`](crate::types::error::CustomCodeError).
          58  +
    /// /* BuilderGenerator.kt:173 */Creates a new builder-style object to manufacture [`CustomCodeError`](crate::types::error::CustomCodeError).
          59  +
    /* BuilderGenerator.kt:175 */
   35     60   
    pub fn builder() -> crate::types::error::builders::CustomCodeErrorBuilder {
          61  +
        /* BuilderGenerator.kt:176 */
   36     62   
        crate::types::error::builders::CustomCodeErrorBuilder::default()
          63  +
        /* BuilderGenerator.kt:175 */
   37     64   
    }
          65  +
    /* ErrorGenerator.kt:81 */
   38     66   
}
   39     67   
   40         -
/// A builder for [`CustomCodeError`](crate::types::error::CustomCodeError).
          68  +
/// /* BuilderGenerator.kt:342 */A builder for [`CustomCodeError`](crate::types::error::CustomCodeError).
          69  +
/* RustType.kt:516 */
   41     70   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
          71  +
/* RustType.kt:516 */
   42     72   
#[non_exhaustive]
          73  +
/* BuilderGenerator.kt:345 */
   43     74   
pub struct CustomCodeErrorBuilder {
   44         -
    pub(crate) message: ::std::option::Option<::std::string::String>,
   45         -
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
          75  +
    /* BuilderGenerator.kt:275 */ pub(crate) message: ::std::option::Option<::std::string::String>,
          76  +
    /* ErrorGenerator.kt:97 */ meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
          77  +
    /* BuilderGenerator.kt:345 */
   46     78   
}
          79  +
/* BuilderGenerator.kt:355 */
   47     80   
impl CustomCodeErrorBuilder {
          81  +
    /* BuilderGenerator.kt:286 */
   48     82   
    #[allow(missing_docs)] // documentation missing in model
          83  +
                           /* BuilderGenerator.kt:291 */
   49     84   
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
          85  +
        /* BuilderGenerator.kt:292 */
   50     86   
        self.message = ::std::option::Option::Some(input.into());
          87  +
        /* BuilderGenerator.kt:293 */
   51     88   
        self
          89  +
        /* BuilderGenerator.kt:291 */
   52     90   
    }
          91  +
    /* BuilderGenerator.kt:312 */
   53     92   
    #[allow(missing_docs)] // documentation missing in model
          93  +
                           /* BuilderGenerator.kt:314 */
   54     94   
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
          95  +
        /* BuilderGenerator.kt:315 */
   55     96   
        self.message = input;
   56     97   
        self
          98  +
        /* BuilderGenerator.kt:314 */
   57     99   
    }
         100  +
    /* BuilderGenerator.kt:334 */
   58    101   
    #[allow(missing_docs)] // documentation missing in model
         102  +
                           /* BuilderGenerator.kt:336 */
   59    103   
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
         104  +
        /* BuilderGenerator.kt:337 */
   60    105   
        &self.message
         106  +
        /* BuilderGenerator.kt:336 */
   61    107   
    }
         108  +
    /* ErrorGenerator.kt:101 */
   62    109   
    /// Sets error metadata
   63    110   
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
   64    111   
        self.meta = Some(meta);
   65    112   
        self
   66    113   
    }
   67    114   
   68    115   
    /// Sets error metadata
   69    116   
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
   70    117   
        self.meta = meta;
   71    118   
        self
   72    119   
    }
   73         -
    /// Consumes the builder and constructs a [`CustomCodeError`](crate::types::error::CustomCodeError).
         120  +
    /// /* BuilderGenerator.kt:240 */Consumes the builder and constructs a [`CustomCodeError`](crate::types::error::CustomCodeError).
         121  +
    /* BuilderGenerator.kt:253 */
   74    122   
    pub fn build(self) -> crate::types::error::CustomCodeError {
         123  +
        /* BuilderGenerator.kt:477 */
   75    124   
        crate::types::error::CustomCodeError {
   76         -
            message: self.message,
         125  +
            /* BuilderGenerator.kt:481 */ message: self.message,
         126  +
            /* ErrorGenerator.kt:120 */
   77    127   
            meta: self.meta.unwrap_or_default(),
         128  +
            /* BuilderGenerator.kt:477 */
   78    129   
        }
         130  +
        /* BuilderGenerator.kt:253 */
   79    131   
    }
         132  +
    /* BuilderGenerator.kt:355 */
   80    133   
}

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

@@ -1,1 +81,133 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2         -
    3         -
/// This error is thrown when an invalid greeting value is provided.
           2  +
/* StructureGenerator.kt:197 */
           3  +
/// /* StructureGenerator.kt:197 */This error is thrown when an invalid greeting value is provided.
           4  +
/* RustType.kt:516 */
    4      5   
#[non_exhaustive]
           6  +
/* RustType.kt:516 */
    5      7   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
    6         -
pub struct InvalidGreeting {
           8  +
pub /* StructureGenerator.kt:201 */ struct InvalidGreeting {
           9  +
    /* StructureGenerator.kt:231 */
    7     10   
    #[allow(missing_docs)] // documentation missing in model
    8     11   
    pub message: ::std::option::Option<::std::string::String>,
    9         -
    pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
          12  +
    /* ErrorGenerator.kt:53 */ pub(crate) meta: ::aws_smithy_types::error::ErrorMetadata,
          13  +
    /* StructureGenerator.kt:201 */
   10     14   
}
          15  +
/* ErrorImplGenerator.kt:99 */
   11     16   
impl InvalidGreeting {
          17  +
    /* ErrorImplGenerator.kt:128 */
   12     18   
    /// Returns the error message.
   13     19   
    pub fn message(&self) -> ::std::option::Option<&str> {
   14     20   
        self.message.as_deref()
   15     21   
    }
          22  +
    /* ErrorImplGenerator.kt:99 */
   16     23   
}
          24  +
/* ErrorImplGenerator.kt:153 */
   17     25   
impl ::std::fmt::Display for InvalidGreeting {
          26  +
    /* ErrorImplGenerator.kt:154 */
   18     27   
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
          28  +
        /* ErrorImplGenerator.kt:161 */
   19     29   
        ::std::write!(f, "InvalidGreeting")?;
          30  +
        /* ErrorImplGenerator.kt:166 */
   20     31   
        if let ::std::option::Option::Some(inner_1) = &self.message {
          32  +
            /* ErrorImplGenerator.kt:166 */
   21     33   
            {
          34  +
                /* ErrorImplGenerator.kt:167 */
   22     35   
                ::std::write!(f, ": {}", inner_1)?;
          36  +
                /* ErrorImplGenerator.kt:166 */
   23     37   
            }
          38  +
            /* ErrorImplGenerator.kt:166 */
   24     39   
        }
          40  +
        /* ErrorImplGenerator.kt:171 */
   25     41   
        Ok(())
          42  +
        /* ErrorImplGenerator.kt:154 */
   26     43   
    }
          44  +
    /* ErrorImplGenerator.kt:153 */
   27     45   
}
          46  +
/* ErrorImplGenerator.kt:175 */
   28     47   
impl ::std::error::Error for InvalidGreeting {}
          48  +
/* ErrorGenerator.kt:77 */
   29     49   
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for InvalidGreeting {
          50  +
    /* ErrorGenerator.kt:78 */
   30     51   
    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
   31     52   
        &self.meta
   32     53   
    }
          54  +
    /* ErrorGenerator.kt:77 */
   33     55   
}
          56  +
/* ErrorGenerator.kt:81 */
   34     57   
impl InvalidGreeting {
   35         -
    /// Creates a new builder-style object to manufacture [`InvalidGreeting`](crate::types::error::InvalidGreeting).
          58  +
    /// /* BuilderGenerator.kt:173 */Creates a new builder-style object to manufacture [`InvalidGreeting`](crate::types::error::InvalidGreeting).
          59  +
    /* BuilderGenerator.kt:175 */
   36     60   
    pub fn builder() -> crate::types::error::builders::InvalidGreetingBuilder {
          61  +
        /* BuilderGenerator.kt:176 */
   37     62   
        crate::types::error::builders::InvalidGreetingBuilder::default()
          63  +
        /* BuilderGenerator.kt:175 */
   38     64   
    }
          65  +
    /* ErrorGenerator.kt:81 */
   39     66   
}
   40     67   
   41         -
/// A builder for [`InvalidGreeting`](crate::types::error::InvalidGreeting).
          68  +
/// /* BuilderGenerator.kt:342 */A builder for [`InvalidGreeting`](crate::types::error::InvalidGreeting).
          69  +
/* RustType.kt:516 */
   42     70   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
          71  +
/* RustType.kt:516 */
   43     72   
#[non_exhaustive]
          73  +
/* BuilderGenerator.kt:345 */
   44     74   
pub struct InvalidGreetingBuilder {
   45         -
    pub(crate) message: ::std::option::Option<::std::string::String>,
   46         -
    meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
          75  +
    /* BuilderGenerator.kt:275 */ pub(crate) message: ::std::option::Option<::std::string::String>,
          76  +
    /* ErrorGenerator.kt:97 */ meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
          77  +
    /* BuilderGenerator.kt:345 */
   47     78   
}
          79  +
/* BuilderGenerator.kt:355 */
   48     80   
impl InvalidGreetingBuilder {
          81  +
    /* BuilderGenerator.kt:286 */
   49     82   
    #[allow(missing_docs)] // documentation missing in model
          83  +
                           /* BuilderGenerator.kt:291 */
   50     84   
    pub fn message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
          85  +
        /* BuilderGenerator.kt:292 */
   51     86   
        self.message = ::std::option::Option::Some(input.into());
          87  +
        /* BuilderGenerator.kt:293 */
   52     88   
        self
          89  +
        /* BuilderGenerator.kt:291 */
   53     90   
    }
          91  +
    /* BuilderGenerator.kt:312 */
   54     92   
    #[allow(missing_docs)] // documentation missing in model
          93  +
                           /* BuilderGenerator.kt:314 */
   55     94   
    pub fn set_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
          95  +
        /* BuilderGenerator.kt:315 */
   56     96   
        self.message = input;
   57     97   
        self
          98  +
        /* BuilderGenerator.kt:314 */
   58     99   
    }
         100  +
    /* BuilderGenerator.kt:334 */
   59    101   
    #[allow(missing_docs)] // documentation missing in model
         102  +
                           /* BuilderGenerator.kt:336 */
   60    103   
    pub fn get_message(&self) -> &::std::option::Option<::std::string::String> {
         104  +
        /* BuilderGenerator.kt:337 */
   61    105   
        &self.message
         106  +
        /* BuilderGenerator.kt:336 */
   62    107   
    }
         108  +
    /* ErrorGenerator.kt:101 */
   63    109   
    /// Sets error metadata
   64    110   
    pub fn meta(mut self, meta: ::aws_smithy_types::error::ErrorMetadata) -> Self {
   65    111   
        self.meta = Some(meta);
   66    112   
        self
   67    113   
    }
   68    114   
   69    115   
    /// Sets error metadata
   70    116   
    pub fn set_meta(&mut self, meta: std::option::Option<::aws_smithy_types::error::ErrorMetadata>) -> &mut Self {
   71    117   
        self.meta = meta;
   72    118   
        self
   73    119   
    }
   74         -
    /// Consumes the builder and constructs a [`InvalidGreeting`](crate::types::error::InvalidGreeting).
         120  +
    /// /* BuilderGenerator.kt:240 */Consumes the builder and constructs a [`InvalidGreeting`](crate::types::error::InvalidGreeting).
         121  +
    /* BuilderGenerator.kt:253 */
   75    122   
    pub fn build(self) -> crate::types::error::InvalidGreeting {
         123  +
        /* BuilderGenerator.kt:477 */
   76    124   
        crate::types::error::InvalidGreeting {
   77         -
            message: self.message,
         125  +
            /* BuilderGenerator.kt:481 */ message: self.message,
         126  +
            /* ErrorGenerator.kt:120 */
   78    127   
            meta: self.meta.unwrap_or_default(),
         128  +
            /* BuilderGenerator.kt:477 */
   79    129   
        }
         130  +
        /* BuilderGenerator.kt:253 */
   80    131   
    }
         132  +
    /* BuilderGenerator.kt:355 */
   81    133   
}

tmp-codegen-diff/codegen-client-test/aws_query/rust-client-codegen/src/types/error/builders.rs

@@ -1,1 +6,9 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* CodegenDelegator.kt:255 */
    2      3   
pub use crate::types::error::_custom_code_error::CustomCodeErrorBuilder;
    3      4   
           5  +
/* CodegenDelegator.kt:255 */
    4      6   
pub use crate::types::error::_complex_error::ComplexErrorBuilder;
    5      7   
           8  +
/* CodegenDelegator.kt:255 */
    6      9   
pub use crate::types::error::_invalid_greeting::InvalidGreetingBuilder;

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

@@ -1,1 +31,32 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:105 */
    2      3   
#[derive(Debug)]
    3      4   
pub(crate) struct Handle {
    4      5   
    pub(crate) conf: crate::Config,
    5      6   
    #[allow(dead_code)] // unused when a service does not provide any operations
    6      7   
    pub(crate) runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
    7      8   
}
    8      9   
    9     10   
///
   10     11   
/// An ergonomic client for Amazon DynamoDB.
   11     12   
///
@@ -91,92 +266,329 @@
  111    112   
    fn validate_config(handle: &Handle) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
  112    113   
        let mut cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
  113    114   
        handle
  114    115   
            .runtime_plugins
  115    116   
            .apply_client_configuration(&mut cfg)?
  116    117   
            .validate_base_client_config(&cfg)?;
  117    118   
        Ok(())
  118    119   
    }
  119    120   
}
  120    121   
  121         -
///
         122  +
/// /* WaitableGenerator.kt:79 */
  122    123   
/// Waiter functions for the client.
  123    124   
///
  124    125   
/// Import this trait to get `wait_until` methods on the client.
  125    126   
///
         127  +
/* WaitableGenerator.kt:86 */
  126    128   
pub trait Waiters {
  127         -
    /// Wait for `table_exists`
  128         -
    fn wait_until_table_exists(&self) -> crate::waiters::table_exists::TableExistsFluentBuilder;
  129         -
    /// Wait for `table_not_exists`
  130         -
    fn wait_until_table_not_exists(&self) -> crate::waiters::table_not_exists::TableNotExistsFluentBuilder;
         129  +
    /// /* WaitableGenerator.kt:90 */Wait for `table_exists`
         130  +
    /* WaitableGenerator.kt:113 */
         131  +
    fn wait_until_table_exists(&self) -> crate::waiters::table_exists::TableExistsFluentBuilder
         132  +
/* WaitableGenerator.kt:92 */;
         133  +
    /// /* WaitableGenerator.kt:90 */Wait for `table_not_exists`
         134  +
    /* WaitableGenerator.kt:113 */
         135  +
    fn wait_until_table_not_exists(&self) -> crate::waiters::table_not_exists::TableNotExistsFluentBuilder
         136  +
/* WaitableGenerator.kt:92 */;
         137  +
    /* WaitableGenerator.kt:86 */
  131    138   
}
         139  +
/* WaitableGenerator.kt:97 */
  132    140   
impl Waiters for Client {
  133         -
    fn wait_until_table_exists(&self) -> crate::waiters::table_exists::TableExistsFluentBuilder {
         141  +
    /* WaitableGenerator.kt:113 */
         142  +
    fn wait_until_table_exists(&self) -> crate::waiters::table_exists::TableExistsFluentBuilder
         143  +
/* WaitableGenerator.kt:101 */ {
  134    144   
        crate::waiters::table_exists::TableExistsFluentBuilder::new(self.handle.clone())
  135    145   
    }
  136         -
    fn wait_until_table_not_exists(&self) -> crate::waiters::table_not_exists::TableNotExistsFluentBuilder {
         146  +
    /* WaitableGenerator.kt:113 */
         147  +
    fn wait_until_table_not_exists(&self) -> crate::waiters::table_not_exists::TableNotExistsFluentBuilder
         148  +
/* WaitableGenerator.kt:101 */ {
  137    149   
        crate::waiters::table_not_exists::TableNotExistsFluentBuilder::new(self.handle.clone())
  138    150   
    }
         151  +
    /* WaitableGenerator.kt:97 */
  139    152   
}
  140    153   
         154  +
/* RustModule.kt:172 */
  141    155   
mod batch_execute_statement;
  142    156   
         157  +
/* RustModule.kt:172 */
  143    158   
mod batch_get_item;
  144    159   
         160  +
/* RustModule.kt:172 */
  145    161   
mod batch_write_item;
  146    162   
         163  +
/* RustModule.kt:172 */
  147    164   
mod create_backup;
  148    165   
         166  +
/* RustModule.kt:172 */
  149    167   
mod create_global_table;
  150    168   
         169  +
/* RustModule.kt:172 */
  151    170   
mod create_table;
  152    171   
  153         -
/// Operation customization and supporting types.
         172  +
/// /* ClientRustModule.kt:161 */Operation customization and supporting types.
  154    173   
///
  155         -
/// The underlying HTTP requests made during an operation can be customized
         174  +
/// /* ClientRustModule.kt:170 */The underlying HTTP requests made during an operation can be customized
  156    175   
/// by calling the `customize()` method on the builder returned from a client
  157    176   
/// operation call. For example, this can be used to add an additional HTTP header:
  158    177   
///
  159    178   
/// ```ignore
  160    179   
/// # async fn wrapper() -> ::std::result::Result<(), dynamo::Error> {
  161    180   
/// # let client: dynamo::Client = unimplemented!();
  162    181   
/// use ::http::header::{HeaderName, HeaderValue};
  163    182   
///
  164    183   
/// let result = client.batch_execute_statement()
  165    184   
///     .customize()
  166    185   
///     .mutate_request(|req| {
  167    186   
///         // Add `x-example-header` with value
  168    187   
///         req.headers_mut()
  169    188   
///             .insert(
  170    189   
///                 HeaderName::from_static("x-example-header"),
  171    190   
///                 HeaderValue::from_static("1"),
  172    191   
///             );
  173    192   
///     })
  174    193   
///     .send()
  175    194   
///     .await;
  176    195   
/// # }
  177    196   
/// ```
  178    197   
pub mod customize;
  179    198   
         199  +
/* RustModule.kt:172 */
  180    200   
mod delete_backup;
  181    201   
         202  +
/* RustModule.kt:172 */
  182    203   
mod delete_item;
  183    204   
         205  +
/* RustModule.kt:172 */
  184    206   
mod delete_table;
  185    207   
         208  +
/* RustModule.kt:172 */
  186    209   
mod describe_backup;
  187    210   
         211  +
/* RustModule.kt:172 */
  188    212   
mod describe_continuous_backups;
  189    213   
         214  +
/* RustModule.kt:172 */
  190    215   
mod describe_contributor_insights;
  191    216   
         217  +
/* RustModule.kt:172 */
  192    218   
mod describe_endpoints;
  193    219   
         220  +
/* RustModule.kt:172 */
  194    221   
mod describe_export;
  195    222   
         223  +
/* RustModule.kt:172 */
  196    224   
mod describe_global_table;
  197    225   
         226  +
/* RustModule.kt:172 */
  198    227   
mod describe_global_table_settings;
  199    228   
         229  +
/* RustModule.kt:172 */
  200    230   
mod describe_kinesis_streaming_destination;
  201    231   
         232  +
/* RustModule.kt:172 */
  202    233   
mod describe_limits;
  203    234   
         235  +
/* RustModule.kt:172 */
  204    236   
mod describe_table;
  205    237   
         238  +
/* RustModule.kt:172 */
  206    239   
mod describe_table_replica_auto_scaling;
  207    240   
         241  +
/* RustModule.kt:172 */
  208    242   
mod describe_time_to_live;
  209    243   
         244  +
/* RustModule.kt:172 */
  210    245   
mod disable_kinesis_streaming_destination;
  211    246   
         247  +
/* RustModule.kt:172 */
  212    248   
mod enable_kinesis_streaming_destination;
  213    249   
         250  +
/* RustModule.kt:172 */
  214    251   
mod execute_statement;
  215    252   
         253  +
/* RustModule.kt:172 */
  216    254   
mod execute_transaction;
  217    255   
         256  +
/* RustModule.kt:172 */
  218    257   
mod export_table_to_point_in_time;
  219    258   
         259  +
/* RustModule.kt:172 */
  220    260   
mod get_item;
  221    261   
         262  +
/* RustModule.kt:172 */
  222    263   
mod list_backups;
  223    264   
         265  +
/* RustModule.kt:172 */
  224    266   
mod list_contributor_insights;
  225    267   
         268  +
/* RustModule.kt:172 */
  226    269   
mod list_exports;
  227    270   
         271  +
/* RustModule.kt:172 */
  228    272   
mod list_global_tables;
  229    273   
         274  +
/* RustModule.kt:172 */
  230    275   
mod list_tables;
  231    276   
         277  +
/* RustModule.kt:172 */
  232    278   
mod list_tags_of_resource;
  233    279   
         280  +
/* RustModule.kt:172 */
  234    281   
mod put_item;
  235    282   
         283  +
/* RustModule.kt:172 */
  236    284   
mod query;
  237    285   
         286  +
/* RustModule.kt:172 */
  238    287   
mod restore_table_from_backup;
  239    288   
         289  +
/* RustModule.kt:172 */
  240    290   
mod restore_table_to_point_in_time;
  241    291   
         292  +
/* RustModule.kt:172 */
  242    293   
mod scan;
  243    294   
         295  +
/* RustModule.kt:172 */
  244    296   
mod tag_resource;
  245    297   
         298  +
/* RustModule.kt:172 */
  246    299   
mod transact_get_items;
  247    300   
         301  +
/* RustModule.kt:172 */
  248    302   
mod transact_write_items;
  249    303   
         304  +
/* RustModule.kt:172 */
  250    305   
mod untag_resource;
  251    306   
         307  +
/* RustModule.kt:172 */
  252    308   
mod update_continuous_backups;
  253    309   
         310  +
/* RustModule.kt:172 */
  254    311   
mod update_contributor_insights;
  255    312   
         313  +
/* RustModule.kt:172 */
  256    314   
mod update_global_table;
  257    315   
         316  +
/* RustModule.kt:172 */
  258    317   
mod update_global_table_settings;
  259    318   
         319  +
/* RustModule.kt:172 */
  260    320   
mod update_item;
  261    321   
         322  +
/* RustModule.kt:172 */
  262    323   
mod update_table;
  263    324   
         325  +
/* RustModule.kt:172 */
  264    326   
mod update_table_replica_auto_scaling;
  265    327   
         328  +
/* RustModule.kt:172 */
  266    329   
mod update_time_to_live;

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

@@ -1,1 +13,17 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`BatchExecuteStatement`](crate::operation::batch_execute_statement::builders::BatchExecuteStatementFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`statements(BatchStatementRequest)`](crate::operation::batch_execute_statement::builders::BatchExecuteStatementFluentBuilder::statements) / [`set_statements(Option<Vec::<BatchStatementRequest>>)`](crate::operation::batch_execute_statement::builders::BatchExecuteStatementFluentBuilder::set_statements):<br>required: **true**<br><p>The list of PartiQL statements representing the batch to run.</p><br>
    7      9   
    /// - On success, responds with [`BatchExecuteStatementOutput`](crate::operation::batch_execute_statement::BatchExecuteStatementOutput) with field(s):
    8     10   
    ///   - [`responses(Option<Vec::<BatchStatementResponse>>)`](crate::operation::batch_execute_statement::BatchExecuteStatementOutput::responses): <p>The response to each PartiQL statement in the batch.</p>
    9     11   
    /// - On failure, responds with [`SdkError<BatchExecuteStatementError>`](crate::operation::batch_execute_statement::BatchExecuteStatementError)
          12  +
    /* FluentClientGenerator.kt:234 */
   10     13   
    pub fn batch_execute_statement(&self) -> crate::operation::batch_execute_statement::builders::BatchExecuteStatementFluentBuilder {
   11     14   
        crate::operation::batch_execute_statement::builders::BatchExecuteStatementFluentBuilder::new(self.handle.clone())
   12     15   
    }
          16  +
    /* FluentClientGenerator.kt:187 */
   13     17   
}

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

@@ -1,1 +16,20 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`BatchGetItem`](crate::operation::batch_get_item::builders::BatchGetItemFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`request_items(impl Into<String>, KeysAndAttributes)`](crate::operation::batch_get_item::builders::BatchGetItemFluentBuilder::request_items) / [`set_request_items(Option<HashMap::<String, KeysAndAttributes>>)`](crate::operation::batch_get_item::builders::BatchGetItemFluentBuilder::set_request_items):<br>required: **true**<br><p>A map of one or more table names and, for each table, a map that describes one or more items to retrieve from that table. Each table name can be used only once per <code>BatchGetItem</code> request.</p> <p>Each element in the map of items to retrieve consists of the following:</p> <ul>  <li>   <p><code>ConsistentRead</code> - If <code>true</code>, a strongly consistent read is used; if <code>false</code> (the default), an eventually consistent read is used.</p></li>  <li>   <p><code>ExpressionAttributeNames</code> - One or more substitution tokens for attribute names in the <code>ProjectionExpression</code> parameter. The following are some use cases for using <code>ExpressionAttributeNames</code>:</p>   <ul>    <li>     <p>To access an attribute whose name conflicts with a DynamoDB reserved word.</p></li>    <li>     <p>To create a placeholder for repeating occurrences of an attribute name in an expression.</p></li>    <li>     <p>To prevent special characters in an attribute name from being misinterpreted in an expression.</p></li>   </ul>   <p>Use the <b>#</b> character in an expression to dereference an attribute name. For example, consider the following attribute name:</p>   <ul>    <li>     <p><code>Percentile</code></p></li>   </ul>   <p>The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, you could specify the following for <code>ExpressionAttributeNames</code>:</p>   <ul>    <li>     <p><code>{"#P":"Percentile"}</code></p></li>   </ul>   <p>You could then use this substitution in an expression, as in this example:</p>   <ul>    <li>     <p><code>#P = :val</code></p></li>   </ul><note>    <p>Tokens that begin with the <b>:</b> character are <i>expression attribute values</i>, which are placeholders for the actual value at runtime.</p>   </note>   <p>For more information about expression attribute names, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p></li>  <li>   <p><code>Keys</code> - An array of primary key attribute values that define specific items in the table. For each primary key, you must provide <i>all</i> of the key attributes. For example, with a simple primary key, you only need to provide the partition key value. For a composite key, you must provide <i>both</i> the partition key value and the sort key value.</p></li>  <li>   <p><code>ProjectionExpression</code> - A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.</p>   <p>If no attribute names are specified, then all attributes are returned. If any of the requested attributes are not found, they do not appear in the result.</p>   <p>For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p></li>  <li>   <p><code>AttributesToGet</code> - This is a legacy parameter. Use <code>ProjectionExpression</code> instead. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.AttributesToGet.html">AttributesToGet</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p></li> </ul><br>
    7      9   
    ///   - [`return_consumed_capacity(ReturnConsumedCapacity)`](crate::operation::batch_get_item::builders::BatchGetItemFluentBuilder::return_consumed_capacity) / [`set_return_consumed_capacity(Option<ReturnConsumedCapacity>)`](crate::operation::batch_get_item::builders::BatchGetItemFluentBuilder::set_return_consumed_capacity):<br>required: **false**<br><p>Determines the level of detail about provisioned throughput consumption that is returned in the response:</p> <ul>  <li>   <p><code>INDEXES</code> - The response includes the aggregate <code>ConsumedCapacity</code> for the operation, together with <code>ConsumedCapacity</code> for each table and secondary index that was accessed.</p>   <p>Note that some operations, such as <code>GetItem</code> and <code>BatchGetItem</code>, do not access any indexes at all. In these cases, specifying <code>INDEXES</code> will only return <code>ConsumedCapacity</code> information for table(s).</p></li>  <li>   <p><code>TOTAL</code> - The response includes only the aggregate <code>ConsumedCapacity</code> for the operation.</p></li>  <li>   <p><code>NONE</code> - No <code>ConsumedCapacity</code> details are included in the response.</p></li> </ul><br>
    8     10   
    /// - On success, responds with [`BatchGetItemOutput`](crate::operation::batch_get_item::BatchGetItemOutput) with field(s):
    9     11   
    ///   - [`responses(Option<HashMap::<String, Vec::<HashMap::<String, AttributeValue>>>>)`](crate::operation::batch_get_item::BatchGetItemOutput::responses): <p>A map of table name to a list of items. Each object in <code>Responses</code> consists of a table name, along with a map of attribute data consisting of the data type and attribute value.</p>
   10     12   
    ///   - [`unprocessed_keys(Option<HashMap::<String, KeysAndAttributes>>)`](crate::operation::batch_get_item::BatchGetItemOutput::unprocessed_keys): <p>A map of tables and their respective keys that were not processed with the current response. The <code>UnprocessedKeys</code> value is in the same form as <code>RequestItems</code>, so the value can be provided directly to a subsequent <code>BatchGetItem</code> operation. For more information, see <code>RequestItems</code> in the Request Parameters section.</p> <p>Each element consists of:</p> <ul>  <li>   <p><code>Keys</code> - An array of primary key attribute values that define specific items in the table.</p></li>  <li>   <p><code>ProjectionExpression</code> - One or more attributes to be retrieved from the table or index. By default, all attributes are returned. If a requested attribute is not found, it does not appear in the result.</p></li>  <li>   <p><code>ConsistentRead</code> - The consistency of a read operation. If set to <code>true</code>, then a strongly consistent read is used; otherwise, an eventually consistent read is used.</p></li> </ul> <p>If there are no unprocessed keys remaining, the response contains an empty <code>UnprocessedKeys</code> map.</p>
   11     13   
    ///   - [`consumed_capacity(Option<Vec::<ConsumedCapacity>>)`](crate::operation::batch_get_item::BatchGetItemOutput::consumed_capacity): <p>The read capacity units consumed by the entire <code>BatchGetItem</code> operation.</p> <p>Each element consists of:</p> <ul>  <li>   <p><code>TableName</code> - The table that consumed the provisioned throughput.</p></li>  <li>   <p><code>CapacityUnits</code> - The total number of capacity units consumed.</p></li> </ul>
   12     14   
    /// - On failure, responds with [`SdkError<BatchGetItemError>`](crate::operation::batch_get_item::BatchGetItemError)
          15  +
    /* FluentClientGenerator.kt:234 */
   13     16   
    pub fn batch_get_item(&self) -> crate::operation::batch_get_item::builders::BatchGetItemFluentBuilder {
   14     17   
        crate::operation::batch_get_item::builders::BatchGetItemFluentBuilder::new(self.handle.clone())
   15     18   
    }
          19  +
    /* FluentClientGenerator.kt:187 */
   16     20   
}

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

@@ -1,1 +17,21 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`BatchWriteItem`](crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`request_items(impl Into<String>, Vec::<WriteRequest>)`](crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder::request_items) / [`set_request_items(Option<HashMap::<String, Vec::<WriteRequest>>>)`](crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder::set_request_items):<br>required: **true**<br><p>A map of one or more table names and, for each table, a list of operations to be performed (<code>DeleteRequest</code> or <code>PutRequest</code>). Each element in the map consists of the following:</p> <ul>  <li>   <p><code>DeleteRequest</code> - Perform a <code>DeleteItem</code> operation on the specified item. The item to be deleted is identified by a <code>Key</code> subelement:</p>   <ul>    <li>     <p><code>Key</code> - A map of primary key attribute values that uniquely identify the item. Each entry in this map consists of an attribute name and an attribute value. For each primary key, you must provide <i>all</i> of the key attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for <i>both</i> the partition key and the sort key.</p></li>   </ul></li>  <li>   <p><code>PutRequest</code> - Perform a <code>PutItem</code> operation on the specified item. The item to be put is identified by an <code>Item</code> subelement:</p>   <ul>    <li>     <p><code>Item</code> - A map of attributes and their values. Each entry in this map consists of an attribute name and an attribute value. Attribute values must not be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests that contain empty values are rejected with a <code>ValidationException</code> exception.</p>     <p>If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.</p></li>   </ul></li> </ul><br>
    7      9   
    ///   - [`return_consumed_capacity(ReturnConsumedCapacity)`](crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder::return_consumed_capacity) / [`set_return_consumed_capacity(Option<ReturnConsumedCapacity>)`](crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder::set_return_consumed_capacity):<br>required: **false**<br><p>Determines the level of detail about provisioned throughput consumption that is returned in the response:</p> <ul>  <li>   <p><code>INDEXES</code> - The response includes the aggregate <code>ConsumedCapacity</code> for the operation, together with <code>ConsumedCapacity</code> for each table and secondary index that was accessed.</p>   <p>Note that some operations, such as <code>GetItem</code> and <code>BatchGetItem</code>, do not access any indexes at all. In these cases, specifying <code>INDEXES</code> will only return <code>ConsumedCapacity</code> information for table(s).</p></li>  <li>   <p><code>TOTAL</code> - The response includes only the aggregate <code>ConsumedCapacity</code> for the operation.</p></li>  <li>   <p><code>NONE</code> - No <code>ConsumedCapacity</code> details are included in the response.</p></li> </ul><br>
    8     10   
    ///   - [`return_item_collection_metrics(ReturnItemCollectionMetrics)`](crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder::return_item_collection_metrics) / [`set_return_item_collection_metrics(Option<ReturnItemCollectionMetrics>)`](crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder::set_return_item_collection_metrics):<br>required: **false**<br><p>Determines whether item collection metrics are returned. If set to <code>SIZE</code>, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to <code>NONE</code> (the default), no statistics are returned.</p><br>
    9     11   
    /// - On success, responds with [`BatchWriteItemOutput`](crate::operation::batch_write_item::BatchWriteItemOutput) with field(s):
   10     12   
    ///   - [`unprocessed_items(Option<HashMap::<String, Vec::<WriteRequest>>>)`](crate::operation::batch_write_item::BatchWriteItemOutput::unprocessed_items): <p>A map of tables and requests against those tables that were not processed. The <code>UnprocessedItems</code> value is in the same form as <code>RequestItems</code>, so you can provide this value directly to a subsequent <code>BatchGetItem</code> operation. For more information, see <code>RequestItems</code> in the Request Parameters section.</p> <p>Each <code>UnprocessedItems</code> entry consists of a table name and, for that table, a list of operations to perform (<code>DeleteRequest</code> or <code>PutRequest</code>).</p> <ul>  <li>   <p><code>DeleteRequest</code> - Perform a <code>DeleteItem</code> operation on the specified item. The item to be deleted is identified by a <code>Key</code> subelement:</p>   <ul>    <li>     <p><code>Key</code> - A map of primary key attribute values that uniquely identify the item. Each entry in this map consists of an attribute name and an attribute value.</p></li>   </ul></li>  <li>   <p><code>PutRequest</code> - Perform a <code>PutItem</code> operation on the specified item. The item to be put is identified by an <code>Item</code> subelement:</p>   <ul>    <li>     <p><code>Item</code> - A map of attributes and their values. Each entry in this map consists of an attribute name and an attribute value. Attribute values must not be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests that contain empty values will be rejected with a <code>ValidationException</code> exception.</p>     <p>If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.</p></li>   </ul></li> </ul> <p>If there are no unprocessed items remaining, the response contains an empty <code>UnprocessedItems</code> map.</p>
   11     13   
    ///   - [`item_collection_metrics(Option<HashMap::<String, Vec::<ItemCollectionMetrics>>>)`](crate::operation::batch_write_item::BatchWriteItemOutput::item_collection_metrics): <p>A list of tables that were processed by <code>BatchWriteItem</code> and, for each table, information about any item collections that were affected by individual <code>DeleteItem</code> or <code>PutItem</code> operations.</p> <p>Each entry consists of the following subelements:</p> <ul>  <li>   <p><code>ItemCollectionKey</code> - The partition key value of the item collection. This is the same as the partition key value of the item.</p></li>  <li>   <p><code>SizeEstimateRangeGB</code> - An estimate of item collection size, expressed in GB. This is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on the table. Use this estimate to measure whether a local secondary index is approaching its size limit.</p>   <p>The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.</p></li> </ul>
   12     14   
    ///   - [`consumed_capacity(Option<Vec::<ConsumedCapacity>>)`](crate::operation::batch_write_item::BatchWriteItemOutput::consumed_capacity): <p>The capacity units consumed by the entire <code>BatchWriteItem</code> operation.</p> <p>Each element consists of:</p> <ul>  <li>   <p><code>TableName</code> - The table that consumed the provisioned throughput.</p></li>  <li>   <p><code>CapacityUnits</code> - The total number of capacity units consumed.</p></li> </ul>
   13     15   
    /// - On failure, responds with [`SdkError<BatchWriteItemError>`](crate::operation::batch_write_item::BatchWriteItemError)
          16  +
    /* FluentClientGenerator.kt:234 */
   14     17   
    pub fn batch_write_item(&self) -> crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder {
   15     18   
        crate::operation::batch_write_item::builders::BatchWriteItemFluentBuilder::new(self.handle.clone())
   16     19   
    }
          20  +
    /* FluentClientGenerator.kt:187 */
   17     21   
}

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

@@ -1,1 +14,18 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`CreateBackup`](crate::operation::create_backup::builders::CreateBackupFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`table_name(impl Into<String>)`](crate::operation::create_backup::builders::CreateBackupFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::create_backup::builders::CreateBackupFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table.</p><br>
    7      9   
    ///   - [`backup_name(impl Into<String>)`](crate::operation::create_backup::builders::CreateBackupFluentBuilder::backup_name) / [`set_backup_name(Option<String>)`](crate::operation::create_backup::builders::CreateBackupFluentBuilder::set_backup_name):<br>required: **true**<br><p>Specified name for the backup.</p><br>
    8     10   
    /// - On success, responds with [`CreateBackupOutput`](crate::operation::create_backup::CreateBackupOutput) with field(s):
    9     11   
    ///   - [`backup_details(Option<BackupDetails>)`](crate::operation::create_backup::CreateBackupOutput::backup_details): <p>Contains the details of the backup created for the table.</p>
   10     12   
    /// - On failure, responds with [`SdkError<CreateBackupError>`](crate::operation::create_backup::CreateBackupError)
          13  +
    /* FluentClientGenerator.kt:234 */
   11     14   
    pub fn create_backup(&self) -> crate::operation::create_backup::builders::CreateBackupFluentBuilder {
   12     15   
        crate::operation::create_backup::builders::CreateBackupFluentBuilder::new(self.handle.clone())
   13     16   
    }
          17  +
    /* FluentClientGenerator.kt:187 */
   14     18   
}

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

@@ -1,1 +14,18 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`CreateGlobalTable`](crate::operation::create_global_table::builders::CreateGlobalTableFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`global_table_name(impl Into<String>)`](crate::operation::create_global_table::builders::CreateGlobalTableFluentBuilder::global_table_name) / [`set_global_table_name(Option<String>)`](crate::operation::create_global_table::builders::CreateGlobalTableFluentBuilder::set_global_table_name):<br>required: **true**<br><p>The global table name.</p><br>
    7      9   
    ///   - [`replication_group(Replica)`](crate::operation::create_global_table::builders::CreateGlobalTableFluentBuilder::replication_group) / [`set_replication_group(Option<Vec::<Replica>>)`](crate::operation::create_global_table::builders::CreateGlobalTableFluentBuilder::set_replication_group):<br>required: **true**<br><p>The Regions where the global table needs to be created.</p><br>
    8     10   
    /// - On success, responds with [`CreateGlobalTableOutput`](crate::operation::create_global_table::CreateGlobalTableOutput) with field(s):
    9     11   
    ///   - [`global_table_description(Option<GlobalTableDescription>)`](crate::operation::create_global_table::CreateGlobalTableOutput::global_table_description): <p>Contains the details of the global table.</p>
   10     12   
    /// - On failure, responds with [`SdkError<CreateGlobalTableError>`](crate::operation::create_global_table::CreateGlobalTableError)
          13  +
    /* FluentClientGenerator.kt:234 */
   11     14   
    pub fn create_global_table(&self) -> crate::operation::create_global_table::builders::CreateGlobalTableFluentBuilder {
   12     15   
        crate::operation::create_global_table::builders::CreateGlobalTableFluentBuilder::new(self.handle.clone())
   13     16   
    }
          17  +
    /* FluentClientGenerator.kt:187 */
   14     18   
}

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

@@ -1,1 +22,26 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* FluentClientGenerator.kt:187 */
    2      3   
impl super::Client {
           4  +
    /* FluentClientGenerator.kt:221 */
    3      5   
    /// Constructs a fluent builder for the [`CreateTable`](crate::operation::create_table::builders::CreateTableFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`attribute_definitions(AttributeDefinition)`](crate::operation::create_table::builders::CreateTableFluentBuilder::attribute_definitions) / [`set_attribute_definitions(Option<Vec::<AttributeDefinition>>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_attribute_definitions):<br>required: **true**<br><p>An array of attributes that describe the key schema for the table and indexes.</p><br>
    7      9   
    ///   - [`table_name(impl Into<String>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table to create.</p><br>
    8     10   
    ///   - [`key_schema(KeySchemaElement)`](crate::operation::create_table::builders::CreateTableFluentBuilder::key_schema) / [`set_key_schema(Option<Vec::<KeySchemaElement>>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_key_schema):<br>required: **true**<br><p>Specifies the attributes that make up the primary key for a table or an index. The attributes in <code>KeySchema</code> must also be defined in the <code>AttributeDefinitions</code> array. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">Data Model</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>Each <code>KeySchemaElement</code> in the array is composed of:</p> <ul>  <li>   <p><code>AttributeName</code> - The name of this key attribute.</p></li>  <li>   <p><code>KeyType</code> - The role that the key attribute will assume:</p>   <ul>    <li>     <p><code>HASH</code> - partition key</p></li>    <li>     <p><code>RANGE</code> - sort key</p></li>   </ul></li> </ul><note>  <p>The partition key of an item is also known as its <i>hash attribute</i>. The term "hash attribute" derives from the DynamoDB usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.</p>  <p>The sort key of an item is also known as its <i>range attribute</i>. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.</p> </note> <p>For a simple primary key (partition key), you must provide exactly one element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite primary key (partition key and sort key), you must provide exactly two elements, in this order: The first element must have a <code>KeyType</code> of <code>HASH</code>, and the second element must have a <code>KeyType</code> of <code>RANGE</code>.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
    9     11   
    ///   - [`local_secondary_indexes(LocalSecondaryIndex)`](crate::operation::create_table::builders::CreateTableFluentBuilder::local_secondary_indexes) / [`set_local_secondary_indexes(Option<Vec::<LocalSecondaryIndex>>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_local_secondary_indexes):<br>required: **false**<br><p>One or more local secondary indexes (the maximum is 5) to be created on the table. Each index is scoped to a given partition key value. There is a 10 GB size limit per partition key value; otherwise, the size of a local secondary index is unconstrained.</p> <p>Each local secondary index in the array includes the following:</p> <ul>  <li>   <p><code>IndexName</code> - The name of the local secondary index. Must be unique only for this table.</p>   <p></p></li>  <li>   <p><code>KeySchema</code> - Specifies the key schema for the local secondary index. The key schema must begin with the same partition key as the table.</p></li>  <li>   <p><code>Projection</code> - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:</p>   <ul>    <li>     <p><code>ProjectionType</code> - One of the following:</p>     <ul>      <li>       <p><code>KEYS_ONLY</code> - Only the index and primary keys are projected into the index.</p></li>      <li>       <p><code>INCLUDE</code> - Only the specified table attributes are projected into the index. The list of projected attributes is in <code>NonKeyAttributes</code>.</p></li>      <li>       <p><code>ALL</code> - All of the table attributes are projected into the index.</p></li>     </ul></li>    <li>     <p><code>NonKeyAttributes</code> - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in <code>NonKeyAttributes</code>, summed across all of the secondary indexes, must not exceed 100. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.</p></li>   </ul></li> </ul><br>
   10     12   
    ///   - [`global_secondary_indexes(GlobalSecondaryIndex)`](crate::operation::create_table::builders::CreateTableFluentBuilder::global_secondary_indexes) / [`set_global_secondary_indexes(Option<Vec::<GlobalSecondaryIndex>>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_global_secondary_indexes):<br>required: **false**<br><p>One or more global secondary indexes (the maximum is 20) to be created on the table. Each global secondary index in the array includes the following:</p> <ul>  <li>   <p><code>IndexName</code> - The name of the global secondary index. Must be unique only for this table.</p>   <p></p></li>  <li>   <p><code>KeySchema</code> - Specifies the key schema for the global secondary index.</p></li>  <li>   <p><code>Projection</code> - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:</p>   <ul>    <li>     <p><code>ProjectionType</code> - One of the following:</p>     <ul>      <li>       <p><code>KEYS_ONLY</code> - Only the index and primary keys are projected into the index.</p></li>      <li>       <p><code>INCLUDE</code> - Only the specified table attributes are projected into the index. The list of projected attributes is in <code>NonKeyAttributes</code>.</p></li>      <li>       <p><code>ALL</code> - All of the table attributes are projected into the index.</p></li>     </ul></li>    <li>     <p><code>NonKeyAttributes</code> - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in <code>NonKeyAttributes</code>, summed across all of the secondary indexes, must not exceed 100. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.</p></li>   </ul></li>  <li>   <p><code>ProvisionedThroughput</code> - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units.</p></li> </ul><br>
   11     13   
    ///   - [`billing_mode(BillingMode)`](crate::operation::create_table::builders::CreateTableFluentBuilder::billing_mode) / [`set_billing_mode(Option<BillingMode>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_billing_mode):<br>required: **false**<br><p>Controls how you are charged for read and write throughput and how you manage capacity. This setting can be changed later.</p> <ul>  <li>   <p><code>PROVISIONED</code> - We recommend using <code>PROVISIONED</code> for predictable workloads. <code>PROVISIONED</code> sets the billing mode to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual">Provisioned Mode</a>.</p></li>  <li>   <p><code>PAY_PER_REQUEST</code> - We recommend using <code>PAY_PER_REQUEST</code> for unpredictable workloads. <code>PAY_PER_REQUEST</code> sets the billing mode to <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand">On-Demand Mode</a>.</p></li> </ul><br>
   12     14   
    ///   - [`provisioned_throughput(ProvisionedThroughput)`](crate::operation::create_table::builders::CreateTableFluentBuilder::provisioned_throughput) / [`set_provisioned_throughput(Option<ProvisionedThroughput>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_provisioned_throughput):<br>required: **false**<br><p>Represents the provisioned throughput settings for a specified table or index. The settings can be modified using the <code>UpdateTable</code> operation.</p> <p>If you set BillingMode as <code>PROVISIONED</code>, you must specify this property. If you set BillingMode as <code>PAY_PER_REQUEST</code>, you cannot specify this property.</p> <p>For current minimum and maximum provisioned throughput values, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Service, Account, and Table Quotas</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p><br>
   13     15   
    ///   - [`stream_specification(StreamSpecification)`](crate::operation::create_table::builders::CreateTableFluentBuilder::stream_specification) / [`set_stream_specification(Option<StreamSpecification>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_stream_specification):<br>required: **false**<br><p>The settings for DynamoDB Streams on the table. These settings consist of:</p> <ul>  <li>   <p><code>StreamEnabled</code> - Indicates whether DynamoDB Streams is to be enabled (true) or disabled (false).</p></li>  <li>   <p><code>StreamViewType</code> - When an item in the table is modified, <code>StreamViewType</code> determines what information is written to the table's stream. Valid values for <code>StreamViewType</code> are:</p>   <ul>    <li>     <p><code>KEYS_ONLY</code> - Only the key attributes of the modified item are written to the stream.</p></li>    <li>     <p><code>NEW_IMAGE</code> - The entire item, as it appears after it was modified, is written to the stream.</p></li>    <li>     <p><code>OLD_IMAGE</code> - The entire item, as it appeared before it was modified, is written to the stream.</p></li>    <li>     <p><code>NEW_AND_OLD_IMAGES</code> - Both the new and the old item images of the item are written to the stream.</p></li>   </ul></li> </ul><br>
   14     16   
    ///   - [`sse_specification(SseSpecification)`](crate::operation::create_table::builders::CreateTableFluentBuilder::sse_specification) / [`set_sse_specification(Option<SseSpecification>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_sse_specification):<br>required: **false**<br><p>Represents the settings used to enable server-side encryption.</p><br>
   15     17   
    ///   - [`tags(Tag)`](crate::operation::create_table::builders::CreateTableFluentBuilder::tags) / [`set_tags(Option<Vec::<Tag>>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_tags):<br>required: **false**<br><p>A list of key-value pairs to label the table. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html">Tagging for DynamoDB</a>.</p><br>
   16     18   
    /// - On success, responds with [`CreateTableOutput`](crate::operation::create_table::CreateTableOutput) with field(s):
   17     19   
    ///   - [`table_description(Option<TableDescription>)`](crate::operation::create_table::CreateTableOutput::table_description): <p>Represents the properties of the table.</p>
   18     20   
    /// - On failure, responds with [`SdkError<CreateTableError>`](crate::operation::create_table::CreateTableError)
          21  +
    /* FluentClientGenerator.kt:234 */
   19     22   
    pub fn create_table(&self) -> crate::operation::create_table::builders::CreateTableFluentBuilder {
   20     23   
        crate::operation::create_table::builders::CreateTableFluentBuilder::new(self.handle.clone())
   21     24   
    }
          25  +
    /* FluentClientGenerator.kt:187 */
   22     26   
}

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

@@ -1,1 +32,33 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
           3  +
/* CustomizableOperationGenerator.kt:72 */
    3      4   
/// `CustomizableOperation` allows for configuring a single operation invocation before it is sent.
    4      5   
pub struct CustomizableOperation<T, E, B> {
    5      6   
    customizable_send: B,
    6      7   
    config_override: ::std::option::Option<crate::config::Builder>,
    7      8   
    interceptors: Vec<::aws_smithy_runtime_api::client::interceptors::SharedInterceptor>,
    8      9   
    runtime_plugins: Vec<::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin>,
    9     10   
    _output: ::std::marker::PhantomData<T>,
   10     11   
    _error: ::std::marker::PhantomData<E>,
   11     12   
}
   12     13   

tmp-codegen-diff/codegen-client-test/dynamo/rust-client-codegen/src/client/customize/internal.rs

@@ -1,1 +12,13 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* CustomizableOperationGenerator.kt:204 */
    2      3   
pub type BoxFuture<T> = ::std::pin::Pin<::std::boxed::Box<dyn ::std::future::Future<Output = T> + ::std::marker::Send>>;
    3      4   
    4      5   
pub type SendResult<T, E> =
    5      6   
    ::std::result::Result<T, ::aws_smithy_runtime_api::client::result::SdkError<E, ::aws_smithy_runtime_api::client::orchestrator::HttpResponse>>;
    6      7   
    7      8   
pub trait CustomizableSend<T, E>: ::std::marker::Send + ::std::marker::Sync {
    8      9   
    // Takes an owned `self` as the implementation will internally call methods that take `self`.
    9     10   
    // If it took `&self`, that would make this trait object safe, but some implementing types do not
   10     11   
    // derive `Clone`, unable to yield `self` from `&self`.
   11     12   
    fn send(self, config_override: crate::config::Builder) -> BoxFuture<SendResult<T, E>>;