Client Test

Client Test

rev. dfb5149b65b7bcc09edd15b8e071ad43b5ac5943

Files changed:

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/client/get_snapshot_block.rs

@@ -1,1 +18,22 @@
    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 [`GetSnapshotBlock`](crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`snapshot_id(impl Into<String>)`](crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder::snapshot_id) / [`set_snapshot_id(Option<String>)`](crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder::set_snapshot_id):<br>required: **true**<br><p>The ID of the snapshot containing the block from which to get data.</p><br>
    7      9   
    ///   - [`block_token(impl Into<String>)`](crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder::block_token) / [`set_block_token(Option<String>)`](crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder::set_block_token):<br>required: **true**<br><p>The block token of the block from which to get data.</p> <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p><br>
    8     10   
    ///   - [`block_index(i32)`](crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder::block_index) / [`set_block_index(Option<i32>)`](crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder::set_block_index):<br>required: **true**<br><p>The block index of the block from which to get data.</p> <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p><br>
    9     11   
    /// - On success, responds with [`GetSnapshotBlockOutput`](crate::operation::get_snapshot_block::GetSnapshotBlockOutput) with field(s):
   10     12   
    ///   - [`data_length(Option<i32>)`](crate::operation::get_snapshot_block::GetSnapshotBlockOutput::data_length): <p>The size of the data in the block.</p>
   11     13   
    ///   - [`checksum_algorithm(Option<ChecksumAlgorithm>)`](crate::operation::get_snapshot_block::GetSnapshotBlockOutput::checksum_algorithm): <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
   12     14   
    ///   - [`checksum(Option<String>)`](crate::operation::get_snapshot_block::GetSnapshotBlockOutput::checksum): <p>The checksum generated for the block, which is Base64 encoded.</p>
   13     15   
    ///   - [`block_data(ByteStream)`](crate::operation::get_snapshot_block::GetSnapshotBlockOutput::block_data): <p>The data content of the block.</p>
   14     16   
    /// - On failure, responds with [`SdkError<GetSnapshotBlockError>`](crate::operation::get_snapshot_block::GetSnapshotBlockError)
          17  +
    /* FluentClientGenerator.kt:234 */
   15     18   
    pub fn get_snapshot_block(&self) -> crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder {
   16     19   
        crate::operation::get_snapshot_block::builders::GetSnapshotBlockFluentBuilder::new(self.handle.clone())
   17     20   
    }
          21  +
    /* FluentClientGenerator.kt:187 */
   18     22   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/client/list_changed_blocks.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 [`ListChangedBlocks`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder) operation.
    4      6   
    /// This operation supports pagination; See [`into_paginator()`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::into_paginator).
    5      7   
    ///
    6      8   
    /// - The fluent builder is configurable:
    7      9   
    ///   - [`second_snapshot_id(impl Into<String>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::second_snapshot_id) / [`set_second_snapshot_id(Option<String>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::set_second_snapshot_id):<br>required: **true**<br><p>The ID of the second snapshot to use for the comparison.</p><important>  <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p> </important><br>
    8     10   
    ///   - [`first_snapshot_id(impl Into<String>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::first_snapshot_id) / [`set_first_snapshot_id(Option<String>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::set_first_snapshot_id):<br>required: **false**<br><p>The ID of the first snapshot to use for the comparison.</p><important>  <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p> </important><br>
    9     11   
    ///   - [`next_token(impl Into<String>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::next_token) / [`set_next_token(Option<String>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::set_next_token):<br>required: **false**<br><p>The token to request the next page of results.</p><br>
   10     12   
    ///   - [`max_results(i32)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::max_results) / [`set_max_results(Option<i32>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::set_max_results):<br>required: **false**<br><p>The number of results to return.</p><br>
   11     13   
    ///   - [`starting_block_index(i32)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::starting_block_index) / [`set_starting_block_index(Option<i32>)`](crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::set_starting_block_index):<br>required: **false**<br><p>The block index from which the comparison should start.</p> <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p><br>
   12     14   
    /// - On success, responds with [`ListChangedBlocksOutput`](crate::operation::list_changed_blocks::ListChangedBlocksOutput) with field(s):
   13     15   
    ///   - [`block_size(Option<i32>)`](crate::operation::list_changed_blocks::ListChangedBlocksOutput::block_size): <p>The size of the block.</p>
   14     16   
    ///   - [`expiry_time(Option<DateTime>)`](crate::operation::list_changed_blocks::ListChangedBlocksOutput::expiry_time): <p>The time when the <code>BlockToken</code> expires.</p>
   15     17   
    ///   - [`volume_size(Option<i64>)`](crate::operation::list_changed_blocks::ListChangedBlocksOutput::volume_size): <p>The size of the volume in GB.</p>
   16     18   
    ///   - [`next_token(Option<String>)`](crate::operation::list_changed_blocks::ListChangedBlocksOutput::next_token): <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
   17     19   
    ///   - [`changed_blocks(Option<Vec::<ChangedBlock>>)`](crate::operation::list_changed_blocks::ListChangedBlocksOutput::changed_blocks): <p>An array of objects containing information about the changed blocks.</p>
   18     20   
    /// - On failure, responds with [`SdkError<ListChangedBlocksError>`](crate::operation::list_changed_blocks::ListChangedBlocksError)
          21  +
    /* FluentClientGenerator.kt:234 */
   19     22   
    pub fn list_changed_blocks(&self) -> crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder {
   20     23   
        crate::operation::list_changed_blocks::builders::ListChangedBlocksFluentBuilder::new(self.handle.clone())
   21     24   
    }
          25  +
    /* FluentClientGenerator.kt:187 */
   22     26   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/client/list_snapshot_blocks.rs

@@ -1,1 +21,25 @@
    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 [`ListSnapshotBlocks`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder) operation.
    4      6   
    /// This operation supports pagination; See [`into_paginator()`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::into_paginator).
    5      7   
    ///
    6      8   
    /// - The fluent builder is configurable:
    7      9   
    ///   - [`max_results(i32)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::max_results) / [`set_max_results(Option<i32>)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::set_max_results):<br>required: **false**<br><p>The number of results to return.</p><br>
    8     10   
    ///   - [`starting_block_index(i32)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::starting_block_index) / [`set_starting_block_index(Option<i32>)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::set_starting_block_index):<br>required: **false**<br><p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p><br>
    9     11   
    ///   - [`next_token(impl Into<String>)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::next_token) / [`set_next_token(Option<String>)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::set_next_token):<br>required: **false**<br><p>The token to request the next page of results.</p><br>
   10     12   
    ///   - [`snapshot_id(impl Into<String>)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::snapshot_id) / [`set_snapshot_id(Option<String>)`](crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::set_snapshot_id):<br>required: **true**<br><p>The ID of the snapshot from which to get block indexes and block tokens.</p><br>
   11     13   
    /// - On success, responds with [`ListSnapshotBlocksOutput`](crate::operation::list_snapshot_blocks::ListSnapshotBlocksOutput) with field(s):
   12     14   
    ///   - [`volume_size(Option<i64>)`](crate::operation::list_snapshot_blocks::ListSnapshotBlocksOutput::volume_size): <p>The size of the volume in GB.</p>
   13     15   
    ///   - [`next_token(Option<String>)`](crate::operation::list_snapshot_blocks::ListSnapshotBlocksOutput::next_token): <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
   14     16   
    ///   - [`expiry_time(Option<DateTime>)`](crate::operation::list_snapshot_blocks::ListSnapshotBlocksOutput::expiry_time): <p>The time when the <code>BlockToken</code> expires.</p>
   15     17   
    ///   - [`blocks(Option<Vec::<Block>>)`](crate::operation::list_snapshot_blocks::ListSnapshotBlocksOutput::blocks): <p>An array of objects containing information about the blocks.</p>
   16     18   
    ///   - [`block_size(Option<i32>)`](crate::operation::list_snapshot_blocks::ListSnapshotBlocksOutput::block_size): <p>The size of the block.</p>
   17     19   
    /// - On failure, responds with [`SdkError<ListSnapshotBlocksError>`](crate::operation::list_snapshot_blocks::ListSnapshotBlocksError)
          20  +
    /* FluentClientGenerator.kt:234 */
   18     21   
    pub fn list_snapshot_blocks(&self) -> crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder {
   19     22   
        crate::operation::list_snapshot_blocks::builders::ListSnapshotBlocksFluentBuilder::new(self.handle.clone())
   20     23   
    }
          24  +
    /* FluentClientGenerator.kt:187 */
   21     25   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/client/put_snapshot_block.rs

@@ -1,1 +20,24 @@
    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 [`PutSnapshotBlock`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`snapshot_id(impl Into<String>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::snapshot_id) / [`set_snapshot_id(Option<String>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::set_snapshot_id):<br>required: **true**<br><p>The ID of the snapshot.</p><br>
    7      9   
    ///   - [`block_index(i32)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::block_index) / [`set_block_index(Option<i32>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::set_block_index):<br>required: **true**<br><p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p><br>
    8     10   
    ///   - [`checksum(impl Into<String>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::checksum) / [`set_checksum(Option<String>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::set_checksum):<br>required: **true**<br><p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p><br>
    9     11   
    ///   - [`progress(i32)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::progress) / [`set_progress(Option<i32>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::set_progress):<br>required: **false**<br><p>The progress of the write process, as a percentage.</p><br>
   10     12   
    ///   - [`block_data(ByteStream)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::block_data) / [`set_block_data(ByteStream)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::set_block_data):<br>required: **true**<br><p>The data to write to the block.</p> <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p><br>
   11     13   
    ///   - [`data_length(i32)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::data_length) / [`set_data_length(Option<i32>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::set_data_length):<br>required: **true**<br><p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p> <p>Valid values: <code>524288</code></p><br>
   12     14   
    ///   - [`checksum_algorithm(ChecksumAlgorithm)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::checksum_algorithm) / [`set_checksum_algorithm(Option<ChecksumAlgorithm>)`](crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::set_checksum_algorithm):<br>required: **true**<br><p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p><br>
   13     15   
    /// - On success, responds with [`PutSnapshotBlockOutput`](crate::operation::put_snapshot_block::PutSnapshotBlockOutput) with field(s):
   14     16   
    ///   - [`checksum_algorithm(Option<ChecksumAlgorithm>)`](crate::operation::put_snapshot_block::PutSnapshotBlockOutput::checksum_algorithm): <p>The algorithm used by Amazon EBS to generate the checksum.</p>
   15     17   
    ///   - [`checksum(Option<String>)`](crate::operation::put_snapshot_block::PutSnapshotBlockOutput::checksum): <p>The SHA256 checksum generated for the block data by Amazon EBS.</p>
   16     18   
    /// - On failure, responds with [`SdkError<PutSnapshotBlockError>`](crate::operation::put_snapshot_block::PutSnapshotBlockError)
          19  +
    /* FluentClientGenerator.kt:234 */
   17     20   
    pub fn put_snapshot_block(&self) -> crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder {
   18     21   
        crate::operation::put_snapshot_block::builders::PutSnapshotBlockFluentBuilder::new(self.handle.clone())
   19     22   
    }
          23  +
    /* FluentClientGenerator.kt:187 */
   20     24   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/client/start_snapshot.rs

@@ -1,1 +29,33 @@
    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 [`StartSnapshot`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder) operation.
    4      6   
    ///
    5      7   
    /// - The fluent builder is configurable:
    6      8   
    ///   - [`timeout(i32)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::timeout) / [`set_timeout(Option<i32>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_timeout):<br>required: **false**<br><p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p> <ul>  <li>   <p>No blocks are written to the snapshot.</p></li>  <li>   <p>The snapshot is not completed after writing the last block of data.</p></li> </ul> <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p><br>
    7      9   
    ///   - [`client_token(impl Into<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::client_token) / [`set_client_token(Option<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_client_token):<br>required: **false**<br><p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p> <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p><br>
    8     10   
    ///   - [`volume_size(i64)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::volume_size) / [`set_volume_size(Option<i64>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_volume_size):<br>required: **true**<br><p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p><br>
    9     11   
    ///   - [`tags(Tag)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::tags) / [`set_tags(Option<Vec::<Tag>>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_tags):<br>required: **false**<br><p>The tags to apply to the snapshot.</p><br>
   10     12   
    ///   - [`encrypted(bool)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::encrypted) / [`set_encrypted(Option<bool>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_encrypted):<br>required: **false**<br><p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p> <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p> <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p> <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p><br>
   11     13   
    ///   - [`kms_key_arn(impl Into<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::kms_key_arn) / [`set_kms_key_arn(Option<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_kms_key_arn):<br>required: **false**<br><p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p> <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p> <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p><br>
   12     14   
    ///   - [`parent_snapshot_id(impl Into<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::parent_snapshot_id) / [`set_parent_snapshot_id(Option<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_parent_snapshot_id):<br>required: **false**<br><p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p> <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p><br>
   13     15   
    ///   - [`description(impl Into<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::description) / [`set_description(Option<String>)`](crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::set_description):<br>required: **false**<br><p>A description for the snapshot.</p><br>
   14     16   
    /// - On success, responds with [`StartSnapshotOutput`](crate::operation::start_snapshot::StartSnapshotOutput) with field(s):
   15     17   
    ///   - [`tags(Option<Vec::<Tag>>)`](crate::operation::start_snapshot::StartSnapshotOutput::tags): <p>The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html"> Tagging your Amazon EC2 resources</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
   16     18   
    ///   - [`kms_key_arn(Option<String>)`](crate::operation::start_snapshot::StartSnapshotOutput::kms_key_arn): <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) used to encrypt the snapshot.</p>
   17     19   
    ///   - [`owner_id(Option<String>)`](crate::operation::start_snapshot::StartSnapshotOutput::owner_id): <p>The AWS account ID of the snapshot owner.</p>
   18     20   
    ///   - [`volume_size(Option<i64>)`](crate::operation::start_snapshot::StartSnapshotOutput::volume_size): <p>The size of the volume, in GiB.</p>
   19     21   
    ///   - [`parent_snapshot_id(Option<String>)`](crate::operation::start_snapshot::StartSnapshotOutput::parent_snapshot_id): <p>The ID of the parent snapshot.</p>
   20     22   
    ///   - [`description(Option<String>)`](crate::operation::start_snapshot::StartSnapshotOutput::description): <p>The description of the snapshot.</p>
   21     23   
    ///   - [`snapshot_id(Option<String>)`](crate::operation::start_snapshot::StartSnapshotOutput::snapshot_id): <p>The ID of the snapshot.</p>
   22     24   
    ///   - [`block_size(Option<i32>)`](crate::operation::start_snapshot::StartSnapshotOutput::block_size): <p>The size of the blocks in the snapshot, in bytes.</p>
   23     25   
    ///   - [`start_time(Option<DateTime>)`](crate::operation::start_snapshot::StartSnapshotOutput::start_time): <p>The timestamp when the snapshot was created.</p>
   24     26   
    ///   - [`status(Option<Status>)`](crate::operation::start_snapshot::StartSnapshotOutput::status): <p>The status of the snapshot.</p>
   25     27   
    /// - On failure, responds with [`SdkError<StartSnapshotError>`](crate::operation::start_snapshot::StartSnapshotError)
          28  +
    /* FluentClientGenerator.kt:234 */
   26     29   
    pub fn start_snapshot(&self) -> crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder {
   27     30   
        crate::operation::start_snapshot::builders::StartSnapshotFluentBuilder::new(self.handle.clone())
   28     31   
    }
          32  +
    /* FluentClientGenerator.kt:187 */
   29     33   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/config.rs

@@ -1,1 +187,227 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2         -
    3         -
/// Configuration for a ebs service client.
           2  +
/* ServiceConfigGenerator.kt:409 */
           3  +
/// /* ServiceConfigGenerator.kt:409 */Configuration for a ebs service client.
    4      4   
///
           5  +
/* RustType.kt:516 */
    5      6   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
           7  +
/* ServiceConfigGenerator.kt:414 */
    6      8   
pub struct Config {
    7         -
    // Both `config` and `cloneable` are the same config, but the cloneable one
           9  +
    /* ServiceConfigGenerator.kt:415 */// Both `config` and `cloneable` are the same config, but the cloneable one
    8     10   
    // is kept around so that it is possible to convert back into a builder. This can be
    9     11   
    // optimized in the future.
   10     12   
    pub(crate) config: crate::config::FrozenLayer,
   11     13   
    cloneable: ::aws_smithy_types::config_bag::CloneableLayer,
   12     14   
    pub(crate) runtime_components: crate::config::RuntimeComponentsBuilder,
   13     15   
    pub(crate) runtime_plugins: ::std::vec::Vec<crate::config::SharedRuntimePlugin>,
   14     16   
    pub(crate) behavior_version: ::std::option::Option<crate::config::BehaviorVersion>,
          17  +
    /* ServiceConfigGenerator.kt:414 */
   15     18   
}
          19  +
/* ServiceConfigGenerator.kt:433 */
   16     20   
impl Config {
   17         -
    ///
          21  +
    /// /* ServiceConfigGenerator.kt:434 */
   18     22   
    /// Constructs a config builder.
   19     23   
    /// <div class="warning">
   20     24   
    /// Note that a config created from this builder will not have the same safe defaults as one created by
   21     25   
    /// the <a href="https://crates.io/crates/aws-config" target="_blank">aws-config</a> crate.
   22     26   
    /// </div>
   23     27   
    ///
          28  +
    /* ServiceConfigGenerator.kt:435 */
   24     29   
    pub fn builder() -> Builder {
   25     30   
        Builder::default()
   26     31   
    }
          32  +
    /* ServiceConfigGenerator.kt:440 */
   27     33   
    /// Converts this config back into a builder so that it can be tweaked.
   28     34   
    pub fn to_builder(&self) -> Builder {
   29     35   
        Builder {
   30     36   
            config: self.cloneable.clone(),
   31     37   
            runtime_components: self.runtime_components.clone(),
   32     38   
            runtime_plugins: self.runtime_plugins.clone(),
   33     39   
            behavior_version: self.behavior_version,
   34     40   
        }
   35     41   
    }
          42  +
    /* StalledStreamProtectionConfigCustomization.kt:57 */
   36     43   
    /// Return a reference to the stalled stream protection configuration contained in this config, if any.
   37     44   
    pub fn stalled_stream_protection(&self) -> ::std::option::Option<&crate::config::StalledStreamProtectionConfig> {
   38     45   
        self.config.load::<crate::config::StalledStreamProtectionConfig>()
   39     46   
    }
          47  +
    /* HttpConnectorConfigDecorator.kt:52 */
   40     48   
    /// Return the [`SharedHttpClient`](crate::config::SharedHttpClient) to use when making requests, if any.
   41     49   
    pub fn http_client(&self) -> Option<crate::config::SharedHttpClient> {
   42     50   
        self.runtime_components.http_client()
   43     51   
    }
          52  +
    /* EndpointConfigCustomization.kt:47 */
   44     53   
    /// Returns the endpoint resolver.
   45     54   
    pub fn endpoint_resolver(&self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver {
   46     55   
        self.runtime_components.endpoint_resolver().expect("resolver defaulted if not set")
   47     56   
    }
          57  +
    /* ResiliencyConfigCustomization.kt:51 */
   48     58   
    /// Return a reference to the retry configuration contained in this config, if any.
   49     59   
    pub fn retry_config(&self) -> ::std::option::Option<&::aws_smithy_types::retry::RetryConfig> {
   50     60   
        self.config.load::<::aws_smithy_types::retry::RetryConfig>()
   51     61   
    }
   52     62   
   53     63   
    /// Return a cloned shared async sleep implementation from this config, if any.
   54     64   
    pub fn sleep_impl(&self) -> ::std::option::Option<crate::config::SharedAsyncSleep> {
   55     65   
        self.runtime_components.sleep_impl()
   56     66   
    }
   57     67   
   58     68   
    /// Return a reference to the timeout configuration contained in this config, if any.
   59     69   
    pub fn timeout_config(&self) -> ::std::option::Option<&::aws_smithy_types::timeout::TimeoutConfig> {
   60     70   
        self.config.load::<::aws_smithy_types::timeout::TimeoutConfig>()
   61     71   
    }
   62     72   
   63     73   
    /// Returns a reference to the retry partition contained in this config, if any.
   64     74   
    ///
   65     75   
    /// WARNING: This method is unstable and may be removed at any time. Do not rely on this
   66     76   
    /// method for anything!
   67     77   
    pub fn retry_partition(&self) -> ::std::option::Option<&::aws_smithy_runtime::client::retries::RetryPartition> {
   68     78   
        self.config.load::<::aws_smithy_runtime::client::retries::RetryPartition>()
   69     79   
    }
          80  +
    /* IdentityCacheDecorator.kt:96 */
   70     81   
    /// Returns the configured identity cache for auth.
   71     82   
    pub fn identity_cache(&self) -> ::std::option::Option<crate::config::SharedIdentityCache> {
   72     83   
        self.runtime_components.identity_cache()
   73     84   
    }
          85  +
    /* InterceptorConfigCustomization.kt:30 */
   74     86   
    /// Returns interceptors currently registered by the user.
   75     87   
    pub fn interceptors(&self) -> impl Iterator<Item = crate::config::SharedInterceptor> + '_ {
   76     88   
        self.runtime_components.interceptors()
   77     89   
    }
          90  +
    /* TimeSourceCustomization.kt:34 */
   78     91   
    /// Return time source used for this service.
          92  +
    /* TimeSourceCustomization.kt:35 */
   79     93   
    pub fn time_source(&self) -> ::std::option::Option<::aws_smithy_async::time::SharedTimeSource> {
          94  +
        /* TimeSourceCustomization.kt:39 */
   80     95   
        self.runtime_components.time_source()
          96  +
        /* TimeSourceCustomization.kt:35 */
   81     97   
    }
          98  +
    /* RetryClassifierConfigCustomization.kt:39 */
   82     99   
    /// Returns retry classifiers currently registered by the user.
   83    100   
    pub fn retry_classifiers(&self) -> impl Iterator<Item = ::aws_smithy_runtime_api::client::retries::classifiers::SharedRetryClassifier> + '_ {
   84    101   
        self.runtime_components.retry_classifiers()
   85    102   
    }
         103  +
    /* ServiceConfigGenerator.kt:433 */
   86    104   
}
   87         -
/// Builder for creating a `Config`.
         105  +
/// /* ServiceConfigGenerator.kt:458 */Builder for creating a `Config`.
         106  +
/* RustType.kt:516 */
   88    107   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
         108  +
/* ServiceConfigGenerator.kt:460 */
   89    109   
pub struct Builder {
   90         -
    pub(crate) config: ::aws_smithy_types::config_bag::CloneableLayer,
         110  +
    /* ServiceConfigGenerator.kt:461 */ pub(crate) config: ::aws_smithy_types::config_bag::CloneableLayer,
   91    111   
    pub(crate) runtime_components: crate::config::RuntimeComponentsBuilder,
   92    112   
    pub(crate) runtime_plugins: ::std::vec::Vec<crate::config::SharedRuntimePlugin>,
   93    113   
    pub(crate) behavior_version: ::std::option::Option<crate::config::BehaviorVersion>,
         114  +
    /* ServiceConfigGenerator.kt:460 */
   94    115   
}
         116  +
/* ServiceConfigGenerator.kt:476 */
   95    117   
impl ::std::default::Default for Builder {
         118  +
    /* ServiceConfigGenerator.kt:477 */
   96    119   
    fn default() -> Self {
   97    120   
        Self {
   98    121   
            config: ::std::default::Default::default(),
   99    122   
            runtime_components: crate::config::RuntimeComponentsBuilder::new("service config"),
  100    123   
            runtime_plugins: ::std::default::Default::default(),
  101    124   
            behavior_version: ::std::default::Default::default(),
  102    125   
        }
  103    126   
    }
         127  +
    /* ServiceConfigGenerator.kt:476 */
  104    128   
}
         129  +
/* ServiceConfigGenerator.kt:492 */
  105    130   
impl Builder {
  106         -
    ///
         131  +
    /// /* ServiceConfigGenerator.kt:493 */
  107    132   
    /// Constructs a config builder.
  108    133   
    /// <div class="warning">
  109    134   
    /// Note that a config created from this builder will not have the same safe defaults as one created by
  110    135   
    /// the <a href="https://crates.io/crates/aws-config" target="_blank">aws-config</a> crate.
  111    136   
    /// </div>
  112    137   
    ///
         138  +
    /* ServiceConfigGenerator.kt:494 */
  113    139   
    pub fn new() -> Self {
  114    140   
        Self::default()
  115    141   
    }
  116         -
    /// Constructs a config builder from the given `config_bag`, setting only fields stored in the config bag,
  117         -
    /// but not those in runtime components.
         142  +
    /// /* ServiceConfigGenerator.kt:327 */Constructs a config builder from the given `config_bag`, setting only fields stored in the config bag,
         143  +
    /// /* ServiceConfigGenerator.kt:328 */but not those in runtime components.
         144  +
    /* RustType.kt:516 */
  118    145   
    #[allow(unused)]
         146  +
    /* ServiceConfigGenerator.kt:330 */
  119    147   
    pub(crate) fn from_config_bag(config_bag: &::aws_smithy_types::config_bag::ConfigBag) -> Self {
         148  +
        /* ServiceConfigGenerator.kt:334 */
  120    149   
        let mut builder = Self::new();
         150  +
        /* StalledStreamProtectionConfigCustomization.kt:102 */
  121    151   
        builder.set_stalled_stream_protection(config_bag.load::<crate::config::StalledStreamProtectionConfig>().cloned());
         152  +
        /* ResiliencyConfigCustomization.kt:294 */
  122    153   
        builder.set_retry_config(config_bag.load::<::aws_smithy_types::retry::RetryConfig>().cloned());
         154  +
        /* ResiliencyConfigCustomization.kt:298 */
  123    155   
        builder.set_timeout_config(config_bag.load::<::aws_smithy_types::timeout::TimeoutConfig>().cloned());
         156  +
        /* ResiliencyConfigCustomization.kt:302 */
  124    157   
        builder.set_retry_partition(config_bag.load::<::aws_smithy_runtime::client::retries::RetryPartition>().cloned());
         158  +
        /* ServiceConfigGenerator.kt:338 */
  125    159   
        builder
         160  +
        /* ServiceConfigGenerator.kt:330 */
  126    161   
    }
         162  +
    /* StalledStreamProtectionConfigCustomization.kt:69 */
  127    163   
    /// Set the [`StalledStreamProtectionConfig`](crate::config::StalledStreamProtectionConfig)
  128    164   
    /// to configure protection for stalled streams.
  129    165   
    pub fn stalled_stream_protection(mut self, stalled_stream_protection_config: crate::config::StalledStreamProtectionConfig) -> Self {
  130    166   
        self.set_stalled_stream_protection(::std::option::Option::Some(stalled_stream_protection_config));
  131    167   
        self
  132    168   
    }
         169  +
    /* StalledStreamProtectionConfigCustomization.kt:84 */
  133    170   
    /// Set the [`StalledStreamProtectionConfig`](crate::config::StalledStreamProtectionConfig)
  134    171   
    /// to configure protection for stalled streams.
  135    172   
    pub fn set_stalled_stream_protection(
  136    173   
        &mut self,
  137    174   
        stalled_stream_protection_config: ::std::option::Option<crate::config::StalledStreamProtectionConfig>,
  138    175   
    ) -> &mut Self {
  139    176   
        self.config.store_or_unset(stalled_stream_protection_config);
  140    177   
        self
  141    178   
    }
         179  +
    /* IdempotencyTokenProviderCustomization.kt:32 */
  142    180   
    /// Sets the idempotency token provider to use for service calls that require tokens.
  143    181   
    pub fn idempotency_token_provider(
  144    182   
        mut self,
  145    183   
        idempotency_token_provider: impl ::std::convert::Into<crate::idempotency_token::IdempotencyTokenProvider>,
  146    184   
    ) -> Self {
  147    185   
        self.set_idempotency_token_provider(::std::option::Option::Some(idempotency_token_provider.into()));
  148    186   
        self
  149    187   
    }
         188  +
    /* IdempotencyTokenProviderCustomization.kt:43 */
  150    189   
    /// Sets the idempotency token provider to use for service calls that require tokens.
  151    190   
    pub fn set_idempotency_token_provider(
  152    191   
        &mut self,
  153    192   
        idempotency_token_provider: ::std::option::Option<crate::idempotency_token::IdempotencyTokenProvider>,
  154    193   
    ) -> &mut Self {
  155    194   
        self.config.store_or_unset(idempotency_token_provider);
  156    195   
        self
  157    196   
    }
         197  +
    /* HttpConnectorConfigDecorator.kt:65 */
  158    198   
    /// Sets the HTTP client to use when making requests.
  159    199   
    ///
  160    200   
    /// # Examples
  161    201   
    /// ```no_run
  162    202   
    /// # #[cfg(test)]
  163    203   
    /// # mod tests {
  164    204   
    /// # #[test]
  165    205   
    /// # fn example() {
  166    206   
    /// use std::time::Duration;
  167    207   
    /// use ebs::config::Config;
@@ -195,235 +477,529 @@
  215    255   
    /// let mut builder = ebs::Config::builder();
  216    256   
    /// override_http_client(&mut builder);
  217    257   
    /// let config = builder.build();
  218    258   
    /// # }
  219    259   
    /// # }
  220    260   
    /// ```
  221    261   
    pub fn set_http_client(&mut self, http_client: Option<crate::config::SharedHttpClient>) -> &mut Self {
  222    262   
        self.runtime_components.set_http_client(http_client);
  223    263   
        self
  224    264   
    }
         265  +
    /* EndpointConfigCustomization.kt:73 */
  225    266   
    /// Set the endpoint URL to use when making requests.
  226    267   
    ///
  227    268   
    /// Note: setting an endpoint URL will replace any endpoint resolver that has been set.
  228    269   
    ///
  229    270   
    /// # Panics
  230    271   
    /// Panics if an invalid URL is given.
  231    272   
    pub fn endpoint_url(mut self, endpoint_url: impl ::std::convert::Into<::std::string::String>) -> Self {
  232    273   
        self.set_endpoint_url(::std::option::Option::Some(endpoint_url.into()));
  233    274   
        self
  234    275   
    }
  235    276   
  236    277   
    /// Set the endpoint URL to use when making requests.
  237    278   
    ///
  238    279   
    /// Note: setting an endpoint URL will replace any endpoint resolver that has been set.
  239    280   
    ///
  240    281   
    /// # Panics
  241    282   
    /// Panics if an invalid URL is given.
  242    283   
    pub fn set_endpoint_url(&mut self, endpoint_url: ::std::option::Option<::std::string::String>) -> &mut Self {
  243    284   
        #[allow(deprecated)]
  244    285   
        self.set_endpoint_resolver(endpoint_url.map(|url| {
  245    286   
            ::aws_smithy_runtime_api::shared::IntoShared::into_shared(
  246    287   
                ::aws_smithy_runtime::client::orchestrator::endpoints::StaticUriEndpointResolver::uri(url),
  247    288   
            )
  248    289   
        }));
  249    290   
        self
  250    291   
    }
         292  +
    /* EndpointConfigCustomization.kt:105 */
  251    293   
    /// Sets the endpoint resolver to use when making requests.
  252    294   
    ///
  253    295   
    /// This service does not define a default endpoint resolver.
  254    296   
    ///
  255    297   
    /// Note: setting an endpoint resolver will replace any endpoint URL that has been set.
  256    298   
    /// This method accepts an endpoint resolver [specific to this service](crate::config::endpoint::ResolveEndpoint). If you want to
  257    299   
    /// provide a shared endpoint resolver, use [`Self::set_endpoint_resolver`].
  258    300   
    ///
  259    301   
    /// # Examples
  260    302   
    /// Create a custom endpoint resolver that resolves a different endpoing per-stage, e.g. staging vs. production.
  261    303   
    /// ```no_run
  262    304   
    /// use ebs::config::endpoint::{ResolveEndpoint, EndpointFuture, Params, Endpoint};
  263    305   
    /// #[derive(Debug)]
  264    306   
    /// struct StageResolver { stage: String }
  265    307   
    /// impl ResolveEndpoint for StageResolver {
  266    308   
    ///     fn resolve_endpoint(&self, params: &Params) -> EndpointFuture<'_> {
  267    309   
    ///         let stage = &self.stage;
  268    310   
    ///         EndpointFuture::ready(Ok(Endpoint::builder().url(format!("{stage}.myservice.com")).build()))
  269    311   
    ///     }
  270    312   
    /// }
  271    313   
    /// let resolver = StageResolver { stage: std::env::var("STAGE").unwrap() };
  272    314   
    /// let config = ebs::Config::builder().endpoint_resolver(resolver).build();
  273    315   
    /// let client = ebs::Client::from_conf(config);
  274    316   
    /// ```
  275    317   
    pub fn endpoint_resolver(mut self, endpoint_resolver: impl crate::config::endpoint::ResolveEndpoint + 'static) -> Self {
  276    318   
        self.set_endpoint_resolver(::std::option::Option::Some(endpoint_resolver.into_shared_resolver()));
  277    319   
        self
  278    320   
    }
  279    321   
  280    322   
    /// Sets the endpoint resolver to use when making requests.
  281    323   
    ///
  282    324   
    /// This service does not define a default endpoint resolver.
         325  +
    /* EndpointConfigCustomization.kt:143 */
  283    326   
    pub fn set_endpoint_resolver(
  284    327   
        &mut self,
  285    328   
        endpoint_resolver: ::std::option::Option<::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver>,
  286    329   
    ) -> &mut Self {
  287    330   
        self.runtime_components.set_endpoint_resolver(endpoint_resolver);
  288    331   
        self
  289    332   
    }
         333  +
    /* ResiliencyConfigCustomization.kt:81 */
  290    334   
    /// Set the retry_config for the builder
  291    335   
    ///
  292    336   
    /// # Examples
  293    337   
    /// ```no_run
  294    338   
    /// use ebs::config::Config;
  295    339   
    /// use ebs::config::retry::RetryConfig;
  296    340   
    ///
  297    341   
    /// let retry_config = RetryConfig::standard().with_max_attempts(5);
  298    342   
    /// let config = Config::builder().retry_config(retry_config).build();
  299    343   
    /// ```
  300    344   
    pub fn retry_config(mut self, retry_config: ::aws_smithy_types::retry::RetryConfig) -> Self {
  301    345   
        self.set_retry_config(Some(retry_config));
  302    346   
        self
  303    347   
    }
  304    348   
  305    349   
    /// Set the retry_config for the builder
  306    350   
    ///
  307    351   
    /// # Examples
  308    352   
    /// ```no_run
  309    353   
    /// use ebs::config::{Builder, Config};
  310    354   
    /// use ebs::config::retry::RetryConfig;
  311    355   
    ///
  312    356   
    /// fn disable_retries(builder: &mut Builder) {
  313    357   
    ///     let retry_config = RetryConfig::standard().with_max_attempts(1);
  314    358   
    ///     builder.set_retry_config(Some(retry_config));
  315    359   
    /// }
  316    360   
    ///
  317    361   
    /// let mut builder = Config::builder();
  318    362   
    /// disable_retries(&mut builder);
  319    363   
    /// let config = builder.build();
  320    364   
    /// ```
         365  +
    /* ResiliencyConfigCustomization.kt:118 */
  321    366   
    pub fn set_retry_config(&mut self, retry_config: ::std::option::Option<::aws_smithy_types::retry::RetryConfig>) -> &mut Self {
  322    367   
        retry_config.map(|r| self.config.store_put(r));
  323    368   
        self
  324    369   
    }
         370  +
    /* ResiliencyConfigCustomization.kt:128 */
  325    371   
    /// Set the sleep_impl for the builder
  326    372   
    ///
  327    373   
    /// # Examples
  328    374   
    ///
  329    375   
    /// ```no_run
  330    376   
    /// use ebs::config::{AsyncSleep, Config, SharedAsyncSleep, Sleep};
  331    377   
    ///
  332    378   
    /// #[derive(Debug)]
  333    379   
    /// pub struct ForeverSleep;
  334    380   
    ///
  335    381   
    /// impl AsyncSleep for ForeverSleep {
  336    382   
    ///     fn sleep(&self, duration: std::time::Duration) -> Sleep {
  337    383   
    ///         Sleep::new(std::future::pending())
  338    384   
    ///     }
  339    385   
    /// }
  340    386   
    ///
  341    387   
    /// let sleep_impl = SharedAsyncSleep::new(ForeverSleep);
  342    388   
    /// let config = Config::builder().sleep_impl(sleep_impl).build();
  343    389   
    /// ```
  344    390   
    pub fn sleep_impl(mut self, sleep_impl: impl crate::config::AsyncSleep + 'static) -> Self {
  345    391   
        self.set_sleep_impl(Some(::aws_smithy_runtime_api::shared::IntoShared::into_shared(sleep_impl)));
  346    392   
        self
  347    393   
    }
  348    394   
  349    395   
    /// Set the sleep_impl for the builder
  350    396   
    ///
  351    397   
    /// # Examples
  352    398   
    ///
  353    399   
    /// ```no_run
  354    400   
    /// use ebs::config::{AsyncSleep, Builder, Config, SharedAsyncSleep, Sleep};
  355    401   
    ///
  356    402   
    /// #[derive(Debug)]
  357    403   
    /// pub struct ForeverSleep;
  358    404   
    ///
  359    405   
    /// impl AsyncSleep for ForeverSleep {
  360    406   
    ///     fn sleep(&self, duration: std::time::Duration) -> Sleep {
  361    407   
    ///         Sleep::new(std::future::pending())
  362    408   
    ///     }
  363    409   
    /// }
  364    410   
    ///
  365    411   
    /// fn set_never_ending_sleep_impl(builder: &mut Builder) {
  366    412   
    ///     let sleep_impl = SharedAsyncSleep::new(ForeverSleep);
  367    413   
    ///     builder.set_sleep_impl(Some(sleep_impl));
  368    414   
    /// }
  369    415   
    ///
  370    416   
    /// let mut builder = Config::builder();
  371    417   
    /// set_never_ending_sleep_impl(&mut builder);
  372    418   
    /// let config = builder.build();
  373    419   
    /// ```
         420  +
    /* ResiliencyConfigCustomization.kt:184 */
  374    421   
    pub fn set_sleep_impl(&mut self, sleep_impl: ::std::option::Option<crate::config::SharedAsyncSleep>) -> &mut Self {
  375    422   
        self.runtime_components.set_sleep_impl(sleep_impl);
  376    423   
        self
  377    424   
    }
         425  +
    /* ResiliencyConfigCustomization.kt:194 */
  378    426   
    /// Set the timeout_config for the builder
  379    427   
    ///
  380    428   
    /// # Examples
  381    429   
    ///
  382    430   
    /// ```no_run
  383    431   
    /// # use std::time::Duration;
  384    432   
    /// use ebs::config::Config;
  385    433   
    /// use ebs::config::timeout::TimeoutConfig;
  386    434   
    ///
  387    435   
    /// let timeout_config = TimeoutConfig::builder()
  388    436   
    ///     .operation_attempt_timeout(Duration::from_secs(1))
  389    437   
    ///     .build();
  390    438   
    /// let config = Config::builder().timeout_config(timeout_config).build();
  391    439   
    /// ```
  392    440   
    pub fn timeout_config(mut self, timeout_config: ::aws_smithy_types::timeout::TimeoutConfig) -> Self {
  393    441   
        self.set_timeout_config(Some(timeout_config));
  394    442   
        self
  395    443   
    }
  396    444   
  397    445   
    /// Set the timeout_config for the builder.
  398    446   
    ///
  399    447   
    /// Setting this to `None` has no effect if another source of configuration has set timeouts. If you
  400    448   
    /// are attempting to disable timeouts, use [`TimeoutConfig::disabled`](::aws_smithy_types::timeout::TimeoutConfig::disabled)
  401    449   
    ///
  402    450   
    ///
  403    451   
    /// # Examples
  404    452   
    ///
  405    453   
    /// ```no_run
  406    454   
    /// # use std::time::Duration;
  407    455   
    /// use ebs::config::{Builder, Config};
  408    456   
    /// use ebs::config::timeout::TimeoutConfig;
  409    457   
    ///
  410    458   
    /// fn set_request_timeout(builder: &mut Builder) {
  411    459   
    ///     let timeout_config = TimeoutConfig::builder()
  412    460   
    ///         .operation_attempt_timeout(Duration::from_secs(1))
  413    461   
    ///         .build();
  414    462   
    ///     builder.set_timeout_config(Some(timeout_config));
  415    463   
    /// }
  416    464   
    ///
  417    465   
    /// let mut builder = Config::builder();
  418    466   
    /// set_request_timeout(&mut builder);
  419    467   
    /// let config = builder.build();
  420    468   
    /// ```
         469  +
    /* ResiliencyConfigCustomization.kt:248 */
  421    470   
    pub fn set_timeout_config(&mut self, timeout_config: ::std::option::Option<::aws_smithy_types::timeout::TimeoutConfig>) -> &mut Self {
  422    471   
        // passing None has no impact.
  423    472   
        let Some(mut timeout_config) = timeout_config else { return self };
  424    473   
  425    474   
        if let Some(base) = self.config.load::<::aws_smithy_types::timeout::TimeoutConfig>() {
  426    475   
            timeout_config.take_defaults_from(base);
  427    476   
        }
  428    477   
        self.config.store_put(timeout_config);
  429    478   
        self
  430    479   
    }
         480  +
    /* ResiliencyConfigCustomization.kt:266 */
  431    481   
    /// Set the partition for retry-related state. When clients share a retry partition, they will
  432    482   
    /// also share things like token buckets and client rate limiters. By default, all clients
  433    483   
    /// for the same service will share a partition.
  434    484   
    pub fn retry_partition(mut self, retry_partition: ::aws_smithy_runtime::client::retries::RetryPartition) -> Self {
  435    485   
        self.set_retry_partition(Some(retry_partition));
  436    486   
        self
  437    487   
    }
         488  +
    /* ResiliencyConfigCustomization.kt:279 */
  438    489   
    /// Set the partition for retry-related state. When clients share a retry partition, they will
  439    490   
    /// also share things like token buckets and client rate limiters. By default, all clients
  440    491   
    /// for the same service will share a partition.
  441    492   
    pub fn set_retry_partition(
  442    493   
        &mut self,
  443    494   
        retry_partition: ::std::option::Option<::aws_smithy_runtime::client::retries::RetryPartition>,
  444    495   
    ) -> &mut Self {
  445    496   
        retry_partition.map(|r| self.config.store_put(r));
  446    497   
        self
  447    498   
    }
         499  +
    /* IdentityCacheDecorator.kt:77 */
  448    500   
    /// Set the identity cache for auth.
  449    501   
    ///
  450    502   
    /// The identity cache defaults to a lazy caching implementation that will resolve
  451    503   
    /// an identity when it is requested, and place it in the cache thereafter. Subsequent
  452    504   
    /// requests will take the value from the cache while it is still valid. Once it expires,
  453    505   
    /// the next request will result in refreshing the identity.
  454    506   
    ///
  455    507   
    /// This configuration allows you to disable or change the default caching mechanism.
  456    508   
    /// To use a custom caching mechanism, implement the [`ResolveCachedIdentity`](crate::config::ResolveCachedIdentity)
  457    509   
    /// trait and pass that implementation into this function.
@@ -509,561 +568,621 @@
  529    581   
    ///     )
  530    582   
    ///     // ...
  531    583   
    ///     .build();
  532    584   
    /// let client = ebs::Client::from_conf(config);
  533    585   
    /// ```
  534    586   
  535    587   
    pub fn set_identity_cache(&mut self, identity_cache: impl crate::config::ResolveCachedIdentity + 'static) -> &mut Self {
  536    588   
        self.runtime_components.set_identity_cache(::std::option::Option::Some(identity_cache));
  537    589   
        self
  538    590   
    }
         591  +
    /* InterceptorConfigCustomization.kt:41 */
  539    592   
    /// Add an [interceptor](crate::config::Intercept) that runs at specific stages of the request execution pipeline.
  540    593   
    ///
  541    594   
    /// Interceptors targeted at a certain stage are executed according to the pre-defined priority.
  542    595   
    /// The SDK provides a default set of interceptors. An interceptor configured by this method
  543    596   
    /// will run after those default interceptors.
  544    597   
    ///
  545    598   
    /// # Examples
  546    599   
    /// ```no_run
  547    600   
    /// # #[cfg(test)]
  548    601   
    /// # mod tests {
@@ -615,668 +686,742 @@
  635    688   
    pub fn push_interceptor(&mut self, interceptor: crate::config::SharedInterceptor) -> &mut Self {
  636    689   
        self.runtime_components.push_interceptor(interceptor);
  637    690   
        self
  638    691   
    }
  639    692   
  640    693   
    /// Set [`SharedInterceptor`](crate::config::SharedInterceptor)s for the builder.
  641    694   
    pub fn set_interceptors(&mut self, interceptors: impl IntoIterator<Item = crate::config::SharedInterceptor>) -> &mut Self {
  642    695   
        self.runtime_components.set_interceptors(interceptors.into_iter());
  643    696   
        self
  644    697   
    }
         698  +
    /* TimeSourceCustomization.kt:47 */
  645    699   
    /// Sets the time source used for this service
  646    700   
    pub fn time_source(mut self, time_source: impl ::aws_smithy_async::time::TimeSource + 'static) -> Self {
  647    701   
        self.set_time_source(::std::option::Option::Some(::aws_smithy_runtime_api::shared::IntoShared::into_shared(
  648    702   
            time_source,
  649    703   
        )));
  650    704   
        self
  651    705   
    }
         706  +
    /* TimeSourceCustomization.kt:61 */
  652    707   
    /// Sets the time source used for this service
  653    708   
    pub fn set_time_source(&mut self, time_source: ::std::option::Option<::aws_smithy_async::time::SharedTimeSource>) -> &mut Self {
  654    709   
        self.runtime_components.set_time_source(time_source);
  655    710   
        self
  656    711   
    }
         712  +
    /* RetryClassifierConfigCustomization.kt:50 */
  657    713   
    /// Add type implementing [`ClassifyRetry`](::aws_smithy_runtime_api::client::retries::classifiers::ClassifyRetry) that will be used by the
  658    714   
    /// [`RetryStrategy`](::aws_smithy_runtime_api::client::retries::RetryStrategy) to determine what responses should be retried.
  659    715   
    ///
  660    716   
    /// A retry classifier configured by this method will run according to its [priority](::aws_smithy_runtime_api::client::retries::classifiers::RetryClassifierPriority).
  661    717   
    ///
  662    718   
    /// # Examples
  663    719   
    /// ```no_run
  664    720   
    /// # #[cfg(test)]
  665    721   
    /// # mod tests {
  666    722   
    /// # #[test]
@@ -821,877 +880,937 @@
  841    897   
  842    898   
    /// Set [`SharedRetryClassifier`](::aws_smithy_runtime_api::client::retries::classifiers::SharedRetryClassifier)s for the builder, replacing any that
  843    899   
    /// were previously set.
  844    900   
    pub fn set_retry_classifiers(
  845    901   
        &mut self,
  846    902   
        retry_classifiers: impl IntoIterator<Item = ::aws_smithy_runtime_api::client::retries::classifiers::SharedRetryClassifier>,
  847    903   
    ) -> &mut Self {
  848    904   
        self.runtime_components.set_retry_classifiers(retry_classifiers.into_iter());
  849    905   
        self
  850    906   
    }
         907  +
    /* ServiceConfigGenerator.kt:375 */
  851    908   
    /// Sets the [`behavior major version`](crate::config::BehaviorVersion).
  852    909   
    ///
  853    910   
    /// Over time, new best-practice behaviors are introduced. However, these behaviors might not be backwards
  854    911   
    /// compatible. For example, a change which introduces new default timeouts or a new retry-mode for
  855    912   
    /// all operations might be the ideal behavior but could break existing applications.
  856    913   
    ///
  857    914   
    /// # Examples
  858    915   
    ///
  859    916   
    /// Set the behavior major version to `latest`. This is equivalent to enabling the `behavior-version-latest` cargo feature.
  860    917   
    /// ```no_run
@@ -898,955 +1155,1256 @@
  918    975   
        self
  919    976   
    }
  920    977   
  921    978   
    /// Convenience method to set the latest behavior major version
  922    979   
    ///
  923    980   
    /// This is equivalent to enabling the `behavior-version-latest` Cargo feature
  924    981   
    pub fn behavior_version_latest(mut self) -> Self {
  925    982   
        self.set_behavior_version(Some(crate::config::BehaviorVersion::latest()));
  926    983   
        self
  927    984   
    }
  928         -
    /// Adds a runtime plugin to the config.
         985  +
    /// /* ServiceConfigGenerator.kt:509 */Adds a runtime plugin to the config.
         986  +
    /* ServiceConfigGenerator.kt:513 */
  929    987   
    pub fn runtime_plugin(mut self, plugin: impl crate::config::RuntimePlugin + 'static) -> Self {
  930    988   
        self.push_runtime_plugin(crate::config::SharedRuntimePlugin::new(plugin));
  931    989   
        self
  932    990   
    }
  933         -
    /// Adds a runtime plugin to the config.
         991  +
    /// /* ServiceConfigGenerator.kt:522 */Adds a runtime plugin to the config.
         992  +
    /* ServiceConfigGenerator.kt:526 */
  934    993   
    pub fn push_runtime_plugin(&mut self, plugin: crate::config::SharedRuntimePlugin) -> &mut Self {
  935    994   
        self.runtime_plugins.push(plugin);
  936    995   
        self
  937    996   
    }
         997  +
    /* RustType.kt:516 */
  938    998   
    #[cfg(any(feature = "test-util", test))]
         999  +
    /* RustType.kt:516 */
  939   1000   
    #[allow(unused_mut)]
  940         -
    /// Apply test defaults to the builder
        1001  +
    /// /* ServiceConfigGenerator.kt:541 */Apply test defaults to the builder
        1002  +
    /* ServiceConfigGenerator.kt:542 */
  941   1003   
    pub fn apply_test_defaults(&mut self) -> &mut Self {
        1004  +
        /* IdempotencyTokenProviderCustomization.kt:57 */
  942   1005   
        self.set_idempotency_token_provider(Some("00000000-0000-4000-8000-000000000000".into()));
        1006  +
        /* TimeSourceCustomization.kt:88 */
  943   1007   
        self.set_time_source(::std::option::Option::Some(::aws_smithy_async::time::SharedTimeSource::new(
  944   1008   
            ::aws_smithy_async::time::StaticTimeSource::new(::std::time::UNIX_EPOCH + ::std::time::Duration::from_secs(1234567890)),
  945   1009   
        )));
        1010  +
        /* ServiceConfigGenerator.kt:544 */
  946   1011   
        self.behavior_version = ::std::option::Option::Some(crate::config::BehaviorVersion::latest());
        1012  +
        /* ServiceConfigGenerator.kt:545 */
  947   1013   
        self
        1014  +
        /* ServiceConfigGenerator.kt:542 */
  948   1015   
    }
        1016  +
    /* RustType.kt:516 */
  949   1017   
    #[cfg(any(feature = "test-util", test))]
        1018  +
    /* RustType.kt:516 */
  950   1019   
    #[allow(unused_mut)]
  951         -
    /// Apply test defaults to the builder
        1020  +
    /// /* ServiceConfigGenerator.kt:550 */Apply test defaults to the builder
        1021  +
    /* ServiceConfigGenerator.kt:551 */
  952   1022   
    pub fn with_test_defaults(mut self) -> Self {
        1023  +
        /* ServiceConfigGenerator.kt:552 */
  953   1024   
        self.apply_test_defaults();
  954   1025   
        self
        1026  +
        /* ServiceConfigGenerator.kt:551 */
  955   1027   
    }
  956         -
    /// Builds a [`Config`].
        1028  +
    /// /* ServiceConfigGenerator.kt:555 */Builds a [`Config`].
        1029  +
    /* ServiceConfigGenerator.kt:556 */
  957   1030   
    #[allow(unused_mut)]
        1031  +
    /* ServiceConfigGenerator.kt:557 */
  958   1032   
    pub fn build(mut self) -> Config {
        1033  +
        /* ServiceConfigGenerator.kt:558 */
  959   1034   
        let mut layer = self.config;
        1035  +
        /* TimeSourceCustomization.kt:77 */
  960   1036   
        if self.runtime_components.time_source().is_none() {
  961   1037   
            self.runtime_components
  962   1038   
                .set_time_source(::std::option::Option::Some(::std::default::Default::default()));
  963   1039   
        }
        1040  +
        /* ServiceConfigGenerator.kt:567 */
  964   1041   
        Config {
  965         -
            config: crate::config::Layer::from(layer.clone()).with_name("ebs::config::Config").freeze(),
        1042  +
            /* ServiceConfigGenerator.kt:568 */ config: crate::config::Layer::from(layer.clone()).with_name("ebs::config::Config").freeze(),
  966   1043   
            cloneable: layer,
  967   1044   
            runtime_components: self.runtime_components,
  968   1045   
            runtime_plugins: self.runtime_plugins,
  969   1046   
            behavior_version: self.behavior_version,
        1047  +
            /* ServiceConfigGenerator.kt:567 */
  970   1048   
        }
        1049  +
        /* ServiceConfigGenerator.kt:557 */
  971   1050   
    }
        1051  +
    /* ServiceConfigGenerator.kt:492 */
  972   1052   
}
        1053  +
/* ServiceRuntimePluginGenerator.kt:116 */
  973   1054   
#[derive(::std::fmt::Debug)]
  974   1055   
pub(crate) struct ServiceRuntimePlugin {
  975   1056   
    config: ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer>,
  976   1057   
    runtime_components: ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
  977   1058   
}
  978   1059   
  979   1060   
impl ServiceRuntimePlugin {
  980   1061   
    pub fn new(_service_config: crate::config::Config) -> Self {
  981   1062   
        let config = {
  982   1063   
            let mut cfg = ::aws_smithy_types::config_bag::Layer::new("Ebs");
  983   1064   
            cfg.store_put(crate::idempotency_token::default_provider());
  984   1065   
            cfg.store_put(::aws_smithy_runtime::client::orchestrator::AuthSchemeAndEndpointOrchestrationV2);
  985   1066   
            ::std::option::Option::Some(cfg.freeze())
  986   1067   
        };
  987   1068   
        let mut runtime_components = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ServiceRuntimePlugin");
  988   1069   
        runtime_components.push_interceptor(::aws_smithy_runtime::client::http::connection_poisoning::ConnectionPoisoningInterceptor::new());
  989   1070   
        runtime_components.push_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::HttpStatusCodeClassifier::default());
  990   1071   
        runtime_components.push_interceptor(crate::sdk_feature_tracker::retry_mode::RetryModeFeatureTrackerInterceptor::new());
  991   1072   
        Self { config, runtime_components }
  992   1073   
    }
  993   1074   
}
  994   1075   
  995   1076   
impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ServiceRuntimePlugin {
  996   1077   
    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
  997   1078   
        self.config.clone()
  998   1079   
    }
  999   1080   
 1000   1081   
    fn order(&self) -> ::aws_smithy_runtime_api::client::runtime_plugin::Order {
 1001   1082   
        ::aws_smithy_runtime_api::client::runtime_plugin::Order::Defaults
 1002   1083   
    }
 1003   1084   
 1004   1085   
    fn runtime_components(
 1005   1086   
        &self,
 1006   1087   
        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1007   1088   
    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
 1008   1089   
        ::std::borrow::Cow::Borrowed(&self.runtime_components)
 1009   1090   
    }
 1010   1091   
}
 1011   1092   
 1012   1093   
/// Cross-operation shared-state singletons
 1013   1094   
        1095  +
/* ConfigOverrideRuntimePluginGenerator.kt:42 */
 1014   1096   
/// A plugin that enables configuration for a single operation invocation
 1015   1097   
///
 1016   1098   
/// The `config` method will return a `FrozenLayer` by storing values from `config_override`.
 1017   1099   
/// In the case of default values requested, they will be obtained from `client_config`.
 1018   1100   
#[derive(Debug)]
 1019   1101   
pub(crate) struct ConfigOverrideRuntimePlugin {
 1020   1102   
    pub(crate) config: ::aws_smithy_types::config_bag::FrozenLayer,
 1021   1103   
    pub(crate) components: ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1022   1104   
}
 1023   1105   
 1024   1106   
impl ConfigOverrideRuntimePlugin {
 1025   1107   
    #[allow(dead_code)] // unused when a service does not provide any operations
 1026   1108   
    pub(crate) fn new(
 1027   1109   
        config_override: Builder,
 1028   1110   
        initial_config: ::aws_smithy_types::config_bag::FrozenLayer,
 1029   1111   
        initial_components: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1030   1112   
    ) -> Self {
 1031   1113   
        let mut layer = config_override.config;
 1032   1114   
        let mut components = config_override.runtime_components;
 1033   1115   
        #[allow(unused_mut)]
 1034   1116   
        let mut resolver =
 1035   1117   
            ::aws_smithy_runtime::client::config_override::Resolver::overrid(initial_config, initial_components, &mut layer, &mut components);
 1036   1118   
 1037   1119   
        let _ = resolver;
 1038   1120   
        Self {
 1039   1121   
            config: ::aws_smithy_types::config_bag::Layer::from(layer)
 1040   1122   
                .with_name("ebs::config::ConfigOverrideRuntimePlugin")
 1041   1123   
                .freeze(),
 1042   1124   
            components,
 1043   1125   
        }
 1044   1126   
    }
 1045   1127   
}
 1046   1128   
 1047   1129   
impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ConfigOverrideRuntimePlugin {
 1048   1130   
    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
 1049   1131   
        Some(self.config.clone())
 1050   1132   
    }
 1051   1133   
 1052   1134   
    fn runtime_components(
 1053   1135   
        &self,
 1054   1136   
        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
 1055   1137   
    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
 1056   1138   
        ::std::borrow::Cow::Borrowed(&self.components)
 1057   1139   
    }
 1058   1140   
}
 1059   1141   
        1142  +
/* ClientRuntimeTypesReExportGenerator.kt:24 */
 1060   1143   
pub use ::aws_smithy_runtime::client::identity::IdentityCache;
 1061   1144   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1062   1145   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1063   1146   
        1147  +
/* ResiliencyConfigCustomization.kt:318 */
 1064   1148   
pub use ::aws_smithy_async::rt::sleep::Sleep;
 1065   1149   
        1150  +
/* FluentClientGenerator.kt:261 */
 1066   1151   
pub(crate) fn base_client_runtime_plugins(mut config: crate::Config) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
 1067   1152   
    let mut configured_plugins = ::std::vec::Vec::new();
 1068   1153   
    ::std::mem::swap(&mut config.runtime_plugins, &mut configured_plugins);
 1069   1154   
    #[cfg(feature = "behavior-version-latest")]
 1070   1155   
    {
 1071   1156   
        if config.behavior_version.is_none() {
 1072   1157   
            config.behavior_version = Some(::aws_smithy_runtime_api::client::behavior_version::BehaviorVersion::latest());
 1073   1158   
        }
 1074   1159   
    }
 1075   1160   
 1076   1161   
    let default_retry_partition = "ebs";
 1077   1162   
 1078   1163   
    let scope = "ebs";
 1079   1164   
 1080   1165   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1081   1166   
                        // defaults
 1082   1167   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1083   1168   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1084   1169   
                                .with_retry_partition_name(default_retry_partition)
 1085   1170   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
 1086   1171   
                        ))
 1087   1172   
                        // user config
 1088   1173   
                        .with_client_plugin(
 1089   1174   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1090   1175   
                                .with_config(config.config.clone())
 1091   1176   
                                .with_runtime_components(config.runtime_components.clone())
 1092   1177   
                        )
 1093   1178   
                        // codegen config
 1094   1179   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1095   1180   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())
 1096   1181   
                        .with_client_plugin(
 1097   1182   
                            ::aws_smithy_runtime::client::metrics::MetricsRuntimePlugin::builder()
 1098   1183   
                                .with_scope(scope)
 1099   1184   
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1100   1185   
                                .build()
 1101   1186   
                                .expect("All required fields have been set")
 1102   1187   
                        );
 1103   1188   
 1104   1189   
    for plugin in configured_plugins {
 1105   1190   
        plugins = plugins.with_client_plugin(plugin);
 1106   1191   
    }
 1107   1192   
    plugins
 1108   1193   
}
 1109   1194   
        1195  +
/* ClientReExports.kt:17 */
 1110   1196   
pub use ::aws_smithy_types::config_bag::FrozenLayer;
 1111   1197   
        1198  +
/* ClientReExports.kt:17 */
 1112   1199   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder;
 1113   1200   
        1201  +
/* ClientReExports.kt:17 */
 1114   1202   
pub use ::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin;
 1115   1203   
        1204  +
/* ClientReExports.kt:17 */
 1116   1205   
pub use ::aws_smithy_runtime_api::client::behavior_version::BehaviorVersion;
 1117   1206   
        1207  +
/* ClientReExports.kt:17 */
 1118   1208   
pub use ::aws_smithy_runtime_api::client::stalled_stream_protection::StalledStreamProtectionConfig;
 1119   1209   
        1210  +
/* ClientReExports.kt:17 */
 1120   1211   
pub use ::aws_smithy_runtime_api::client::http::SharedHttpClient;
 1121   1212   
        1213  +
/* ClientReExports.kt:17 */
 1122   1214   
pub use ::aws_smithy_async::rt::sleep::SharedAsyncSleep;
 1123   1215   
        1216  +
/* ClientReExports.kt:17 */
 1124   1217   
pub use ::aws_smithy_runtime_api::client::identity::SharedIdentityCache;
 1125   1218   
        1219  +
/* ClientReExports.kt:17 */
 1126   1220   
pub use ::aws_smithy_runtime_api::client::interceptors::SharedInterceptor;
 1127   1221   
        1222  +
/* ClientReExports.kt:17 */
 1128   1223   
pub use ::aws_smithy_runtime_api::client::http::HttpClient;
 1129   1224   
        1225  +
/* ClientReExports.kt:17 */
 1130   1226   
pub use ::aws_smithy_runtime_api::shared::IntoShared;
 1131   1227   
        1228  +
/* ClientReExports.kt:17 */
 1132   1229   
pub use ::aws_smithy_async::rt::sleep::AsyncSleep;
 1133   1230   
        1231  +
/* ClientReExports.kt:17 */
 1134   1232   
pub use ::aws_smithy_runtime_api::client::identity::ResolveCachedIdentity;
 1135   1233   
        1234  +
/* ClientReExports.kt:17 */
 1136   1235   
pub use ::aws_smithy_runtime_api::client::interceptors::Intercept;
 1137   1236   
        1237  +
/* ClientReExports.kt:17 */
 1138   1238   
pub use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
 1139   1239   
        1240  +
/* ClientReExports.kt:17 */
 1140   1241   
pub use ::aws_smithy_types::config_bag::Layer;
 1141   1242   
 1142         -
/// Types needed to configure endpoint resolution.
        1243  +
/// /* ClientRustModule.kt:121 */Types needed to configure endpoint resolution.
 1143   1244   
pub mod endpoint;
 1144   1245   
 1145         -
/// HTTP request and response types.
        1246  +
/// /* ClientRustModule.kt:121 */HTTP request and response types.
 1146   1247   
pub mod http;
 1147   1248   
 1148         -
/// Types needed to implement [`Intercept`](crate::config::Intercept).
        1249  +
/// /* ClientRustModule.kt:121 */Types needed to implement [`Intercept`](crate::config::Intercept).
 1149   1250   
pub mod interceptors;
 1150   1251   
 1151         -
/// Retry configuration.
        1252  +
/// /* ClientRustModule.kt:121 */Retry configuration.
 1152   1253   
pub mod retry;
 1153   1254   
 1154         -
/// Timeout configuration.
        1255  +
/// /* ClientRustModule.kt:121 */Timeout configuration.
 1155   1256   
pub mod timeout;

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/config/endpoint.rs

@@ -1,1 +86,107 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:38 */
    2      3   
pub use ::aws_smithy_runtime_api::client::endpoint::EndpointFuture;
    3      4   
pub use ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
    4      5   
pub use ::aws_smithy_types::endpoint::Endpoint;
    5      6   
           7  +
/* RustType.kt:516 */
    6      8   
#[cfg(test)]
    7         -
mod test {}
           9  +
/* EndpointsDecorator.kt:175 */
          10  +
mod test {
    8     11   
          12  +
    /* EndpointsDecorator.kt:175 */
          13  +
}
          14  +
          15  +
/* EndpointResolverGenerator.kt:416 */
    9     16   
/// Endpoint resolver trait specific to Amazon Elastic Block Store
   10     17   
pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
   11     18   
    /// Resolve an endpoint with the given parameters
   12     19   
    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
   13     20   
   14     21   
    /// Convert this service-specific resolver into a `SharedEndpointResolver`
   15     22   
    ///
   16     23   
    /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
   17     24   
    fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
   18     25   
    where
   19     26   
        Self: Sized + 'static,
   20     27   
    {
   21     28   
        ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
   22     29   
    }
   23     30   
}
   24     31   
   25     32   
#[derive(Debug)]
   26     33   
struct DowncastParams<T>(T);
   27     34   
impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
   28     35   
where
   29     36   
    T: ResolveEndpoint,
   30     37   
{
   31     38   
    fn resolve_endpoint<'a>(
   32     39   
        &'a self,
   33     40   
        params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
   34     41   
    ) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
   35     42   
        let ep = match params.get::<crate::config::endpoint::Params>() {
   36     43   
            Some(params) => self.0.resolve_endpoint(params),
   37     44   
            None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
   38     45   
        };
   39     46   
        ep
   40     47   
    }
   41     48   
}
   42     49   
          50  +
/* RustType.kt:516 */
   43     51   
#[non_exhaustive]
          52  +
/* RustType.kt:516 */
   44     53   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
   45         -
/// Configuration parameters for resolving the correct endpoint
   46         -
pub struct Params {}
          54  +
/// /* EndpointParamsGenerator.kt:178 */Configuration parameters for resolving the correct endpoint
          55  +
/* EndpointParamsGenerator.kt:179 */
          56  +
pub struct Params {/* EndpointParamsGenerator.kt:179 */}
          57  +
/* EndpointParamsGenerator.kt:188 */
   47     58   
impl Params {
          59  +
    /* EndpointParamsGenerator.kt:189 */
   48     60   
    /// Create a builder for [`Params`]
   49     61   
    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
   50     62   
        crate::config::endpoint::ParamsBuilder::default()
   51     63   
    }
          64  +
    /* EndpointParamsGenerator.kt:188 */
   52     65   
}
   53     66   
   54         -
/// Builder for [`Params`]
          67  +
/// /* EndpointParamsGenerator.kt:234 */Builder for [`Params`]
          68  +
/* RustType.kt:516 */
   55     69   
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
   56         -
pub struct ParamsBuilder {}
          70  +
/* EndpointParamsGenerator.kt:238 */
          71  +
pub struct ParamsBuilder {/* EndpointParamsGenerator.kt:238 */}
          72  +
/* EndpointParamsGenerator.kt:246 */
   57     73   
impl ParamsBuilder {
   58         -
    /// Consume this builder, creating [`Params`].
          74  +
    /// /* EndpointParamsGenerator.kt:247 */Consume this builder, creating [`Params`].
          75  +
    /* EndpointParamsGenerator.kt:248 */
   59     76   
    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
          77  +
        /* EndpointParamsGenerator.kt:272 */
   60     78   
        Ok(
   61     79   
            #[allow(clippy::unnecessary_lazy_evaluations)]
   62     80   
            crate::config::endpoint::Params {},
   63     81   
        )
          82  +
        /* EndpointParamsGenerator.kt:248 */
   64     83   
    }
          84  +
    /* EndpointParamsGenerator.kt:246 */
   65     85   
}
   66     86   
          87  +
/* EndpointParamsGenerator.kt:139 */
   67     88   
/// An error that occurred during endpoint resolution
   68     89   
#[derive(Debug)]
   69     90   
pub struct InvalidParams {
   70     91   
    field: std::borrow::Cow<'static, str>,
   71     92   
}
   72     93   
   73     94   
impl InvalidParams {
   74     95   
    #[allow(dead_code)]
   75     96   
    fn missing(field: &'static str) -> Self {
   76     97   
        Self { field: field.into() }

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/config/http.rs

@@ -1,1 +3,4 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:60 */
    2      3   
pub use ::aws_smithy_runtime_api::client::orchestrator::HttpRequest;
    3      4   
pub use ::aws_smithy_runtime_api::client::orchestrator::HttpResponse;

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/config/interceptors.rs

@@ -1,1 +11,12 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:70 */
    2      3   
pub use ::aws_smithy_runtime_api::client::interceptors::context::AfterDeserializationInterceptorContextRef;
    3      4   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeDeserializationInterceptorContextMut;
    4      5   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeDeserializationInterceptorContextRef;
    5      6   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextMut;
    6      7   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef;
    7      8   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeTransmitInterceptorContextMut;
    8      9   
pub use ::aws_smithy_runtime_api::client::interceptors::context::BeforeTransmitInterceptorContextRef;
    9     10   
pub use ::aws_smithy_runtime_api::client::interceptors::context::FinalizerInterceptorContextMut;
   10     11   
pub use ::aws_smithy_runtime_api::client::interceptors::context::FinalizerInterceptorContextRef;
   11     12   
pub use ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext;

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/config/retry.rs

@@ -1,1 +7,9 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:48 */
    2      3   
pub use ::aws_smithy_runtime_api::client::retries::classifiers::ClassifyRetry;
    3      4   
pub use ::aws_smithy_runtime_api::client::retries::classifiers::RetryAction;
    4      5   
pub use ::aws_smithy_runtime_api::client::retries::ShouldAttempt;
    5      6   
    6         -
pub use ::aws_smithy_runtime::client::retries::RetryPartition;
           7  +
/* ResiliencyConfigCustomization.kt:324 */
           8  +
/* ResiliencyConfigCustomization.kt:329 */ pub use ::aws_smithy_runtime::client::retries::RetryPartition;
    7      9   
pub use ::aws_smithy_types::retry::{ReconnectMode, RetryConfig, RetryConfigBuilder, RetryMode};

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/config/timeout.rs

@@ -1,1 +2,3 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ResiliencyConfigCustomization.kt:335 */
    2      3   
pub use ::aws_smithy_types::timeout::{TimeoutConfig, TimeoutConfigBuilder};

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

@@ -1,1 +30,33 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ClientRuntimeTypesReExportGenerator.kt:96 */
    2      3   
pub use ::aws_smithy_runtime_api::box_error::BoxError;
    3      4   
           5  +
/* RequiredCustomizations.kt:104 */
    4      6   
/// Error type returned by the client.
    5      7   
pub type SdkError<E, R = ::aws_smithy_runtime_api::client::orchestrator::HttpResponse> = ::aws_smithy_runtime_api::client::result::SdkError<E, R>;
    6      8   
pub use ::aws_smithy_runtime_api::client::result::ConnectorError;
    7      9   
pub use ::aws_smithy_types::error::operation::BuildError;
    8     10   
    9     11   
pub use ::aws_smithy_types::error::display::DisplayErrorContext;
   10     12   
pub use ::aws_smithy_types::error::metadata::ErrorMetadata;
   11     13   
pub use ::aws_smithy_types::error::metadata::ProvideErrorMetadata;
   12     14   
          15  +
/* ClientEnumGenerator.kt:302 */
   13     16   
/// The given enum value failed to parse since it is not a known value.
   14     17   
#[derive(Debug)]
   15     18   
pub struct UnknownVariantError {
   16     19   
    value: ::std::string::String,
   17     20   
}
   18     21   
impl UnknownVariantError {
   19     22   
    pub(crate) fn new(value: impl ::std::convert::Into<::std::string::String>) -> Self {
   20     23   
        Self { value: value.into() }
   21     24   
    }
   22     25   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/error/sealed_unhandled.rs

@@ -1,1 +20,21 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ServiceErrorGenerator.kt:277 */
    2      3   
/// This struct is not intended to be used.
    3      4   
///
    4      5   
/// This struct holds information about an unhandled error,
    5      6   
/// but that information should be obtained by using the
    6      7   
/// [`ProvideErrorMetadata`](::aws_smithy_types::error::metadata::ProvideErrorMetadata) trait
    7      8   
/// on the error type.
    8      9   
///
    9     10   
/// This struct intentionally doesn't yield any useful information itself.
   10     11   
#[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
   11     12   
variable wildcard pattern and check `.code()`:

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/error_meta.rs

@@ -1,1 +257,412 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* ServiceErrorGenerator.kt:252 */
    2      3   
/// All possible error types for this service.
           4  +
/* RustType.kt:516 */
    3      5   
#[non_exhaustive]
           6  +
/* RustType.kt:516 */
    4      7   
#[derive(::std::fmt::Debug)]
    5         -
pub enum Error {
    6         -
    /// <p>You do not have sufficient access to perform this action.</p>
           8  +
pub /* ServiceErrorGenerator.kt:257 */ enum Error {
           9  +
    /// /* ServiceErrorGenerator.kt:259 */<p>You do not have sufficient access to perform this action.</p>
          10  +
    /* ServiceErrorGenerator.kt:262 */
    7     11   
    AccessDeniedError(crate::types::error::AccessDeniedError),
    8         -
    /// <p>You have reached the limit for concurrent API requests. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapi-performance">Optimizing performance of the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
          12  +
    /// /* ServiceErrorGenerator.kt:259 */<p>You have reached the limit for concurrent API requests. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapi-performance">Optimizing performance of the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
          13  +
    /* ServiceErrorGenerator.kt:262 */
    9     14   
    ConcurrentLimitExceededError(crate::types::error::ConcurrentLimitExceededError),
   10         -
    /// <p>The request uses the same client token as a previous, but non-identical request.</p>
          15  +
    /// /* ServiceErrorGenerator.kt:259 */<p>The request uses the same client token as a previous, but non-identical request.</p>
          16  +
    /* ServiceErrorGenerator.kt:262 */
   11     17   
    ConflictError(crate::types::error::ConflictError),
   12         -
    /// <p>An internal error has occurred.</p>
          18  +
    /// /* ServiceErrorGenerator.kt:259 */<p>An internal error has occurred.</p>
          19  +
    /* ServiceErrorGenerator.kt:262 */
   13     20   
    InternalServerError(crate::types::error::InternalServerError),
   14         -
    /// <p>The number of API requests has exceed the maximum allowed API request throttling limit.</p>
          21  +
    /// /* ServiceErrorGenerator.kt:259 */<p>The number of API requests has exceed the maximum allowed API request throttling limit.</p>
          22  +
    /* ServiceErrorGenerator.kt:262 */
   15     23   
    RequestThrottledError(crate::types::error::RequestThrottledError),
   16         -
    /// <p>The specified resource does not exist.</p>
          24  +
    /// /* ServiceErrorGenerator.kt:259 */<p>The specified resource does not exist.</p>
          25  +
    /* ServiceErrorGenerator.kt:262 */
   17     26   
    ResourceNotFoundError(crate::types::error::ResourceNotFoundError),
   18         -
    /// <p>Your current service quotas do not allow you to perform this action.</p>
          27  +
    /// /* ServiceErrorGenerator.kt:259 */<p>Your current service quotas do not allow you to perform this action.</p>
          28  +
    /* ServiceErrorGenerator.kt:262 */
   19     29   
    ServiceQuotaExceededError(crate::types::error::ServiceQuotaExceededError),
   20         -
    /// <p>The input fails to satisfy the constraints of the EBS direct APIs.</p>
          30  +
    /// /* ServiceErrorGenerator.kt:259 */<p>The input fails to satisfy the constraints of the EBS direct APIs.</p>
          31  +
    /* ServiceErrorGenerator.kt:262 */
   21     32   
    ValidationError(crate::types::error::ValidationError),
   22         -
    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
          33  +
    /// /* ServiceErrorGenerator.kt:264 */An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
          34  +
    /* ServiceErrorGenerator.kt:320 */
   23     35   
    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
   24     36   
    variable wildcard pattern and check `.code()`:
   25     37   
     \
   26     38   
    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
   27     39   
     \
   28     40   
    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-Error) for what information is available for the error.")]
   29         -
    Unhandled(crate::error::sealed_unhandled::Unhandled),
          41  +
    /* ServiceErrorGenerator.kt:266 */
          42  +
    Unhandled(crate::error::sealed_unhandled::Unhandled), /* ServiceErrorGenerator.kt:257 */
   30     43   
}
          44  +
/* ServiceErrorGenerator.kt:131 */
   31     45   
impl ::std::fmt::Display for Error {
          46  +
    /* ServiceErrorGenerator.kt:132 */
   32     47   
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
          48  +
        /* ServiceErrorGenerator.kt:133 */
   33     49   
        match self {
   34         -
            Error::AccessDeniedError(inner) => inner.fmt(f),
   35         -
            Error::ConcurrentLimitExceededError(inner) => inner.fmt(f),
   36         -
            Error::ConflictError(inner) => inner.fmt(f),
   37         -
            Error::InternalServerError(inner) => inner.fmt(f),
   38         -
            Error::RequestThrottledError(inner) => inner.fmt(f),
   39         -
            Error::ResourceNotFoundError(inner) => inner.fmt(f),
   40         -
            Error::ServiceQuotaExceededError(inner) => inner.fmt(f),
   41         -
            Error::ValidationError(inner) => inner.fmt(f),
          50  +
            /* ServiceErrorGenerator.kt:135 */ Error::AccessDeniedError(inner) => inner.fmt(f),
          51  +
            /* ServiceErrorGenerator.kt:135 */ Error::ConcurrentLimitExceededError(inner) => inner.fmt(f),
          52  +
            /* ServiceErrorGenerator.kt:135 */ Error::ConflictError(inner) => inner.fmt(f),
          53  +
            /* ServiceErrorGenerator.kt:135 */ Error::InternalServerError(inner) => inner.fmt(f),
          54  +
            /* ServiceErrorGenerator.kt:135 */ Error::RequestThrottledError(inner) => inner.fmt(f),
          55  +
            /* ServiceErrorGenerator.kt:135 */ Error::ResourceNotFoundError(inner) => inner.fmt(f),
          56  +
            /* ServiceErrorGenerator.kt:135 */ Error::ServiceQuotaExceededError(inner) => inner.fmt(f),
          57  +
            /* ServiceErrorGenerator.kt:135 */ Error::ValidationError(inner) => inner.fmt(f),
          58  +
            /* ServiceErrorGenerator.kt:137 */
   42     59   
            Error::Unhandled(_) => {
   43     60   
                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
   44     61   
                    write!(f, "unhandled error ({code})")
   45     62   
                } else {
   46     63   
                    f.write_str("unhandled error")
   47     64   
                }
   48         -
            }
          65  +
            } /* ServiceErrorGenerator.kt:133 */
   49     66   
        }
          67  +
        /* ServiceErrorGenerator.kt:132 */
   50     68   
    }
          69  +
    /* ServiceErrorGenerator.kt:131 */
   51     70   
}
          71  +
/* ServiceErrorGenerator.kt:154 */
   52     72   
impl From<::aws_smithy_types::error::operation::BuildError> for Error {
   53     73   
    fn from(value: ::aws_smithy_types::error::operation::BuildError) -> Self {
   54     74   
        Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
   55     75   
            source: value.into(),
   56     76   
            meta: ::std::default::Default::default(),
   57     77   
        })
   58     78   
    }
   59     79   
}
          80  +
/* ServiceErrorGenerator.kt:223 */
   60     81   
impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for Error {
   61     82   
    fn meta(&self) -> &::aws_smithy_types::error::metadata::ErrorMetadata {
   62     83   
        match self {
   63     84   
            Self::AccessDeniedError(inner) => inner.meta(),
   64     85   
            Self::ConcurrentLimitExceededError(inner) => inner.meta(),
   65     86   
            Self::ConflictError(inner) => inner.meta(),
   66     87   
            Self::InternalServerError(inner) => inner.meta(),
   67     88   
            Self::RequestThrottledError(inner) => inner.meta(),
   68     89   
            Self::ResourceNotFoundError(inner) => inner.meta(),
   69     90   
            Self::ServiceQuotaExceededError(inner) => inner.meta(),
   70     91   
            Self::ValidationError(inner) => inner.meta(),
   71     92   
            Self::Unhandled(inner) => &inner.meta,
   72     93   
        }
   73     94   
    }
   74     95   
}
          96  +
/* ServiceErrorGenerator.kt:174 */
   75     97   
impl<R> From<::aws_smithy_runtime_api::client::result::SdkError<crate::operation::complete_snapshot::CompleteSnapshotError, R>> for Error
   76     98   
where
   77     99   
    R: Send + Sync + std::fmt::Debug + 'static,
   78    100   
{
         101  +
    /* ServiceErrorGenerator.kt:179 */
   79    102   
    fn from(err: ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::complete_snapshot::CompleteSnapshotError, R>) -> Self {
         103  +
        /* ServiceErrorGenerator.kt:184 */
   80    104   
        match err {
         105  +
            /* ServiceErrorGenerator.kt:185 */
   81    106   
            ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
         107  +
            /* ServiceErrorGenerator.kt:186 */
   82    108   
            _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
   83    109   
                meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
   84    110   
                source: err.into(),
   85    111   
            }),
         112  +
            /* ServiceErrorGenerator.kt:184 */
   86    113   
        }
         114  +
        /* ServiceErrorGenerator.kt:179 */
   87    115   
    }
         116  +
    /* ServiceErrorGenerator.kt:174 */
   88    117   
}
         118  +
/* ServiceErrorGenerator.kt:202 */
   89    119   
impl From<crate::operation::complete_snapshot::CompleteSnapshotError> for Error {
         120  +
    /* ServiceErrorGenerator.kt:203 */
   90    121   
    fn from(err: crate::operation::complete_snapshot::CompleteSnapshotError) -> Self {
         122  +
        /* ServiceErrorGenerator.kt:204 */
   91    123   
        match err {
         124  +
            /* ServiceErrorGenerator.kt:207 */
   92    125   
            crate::operation::complete_snapshot::CompleteSnapshotError::AccessDeniedError(inner) => Error::AccessDeniedError(inner),
         126  +
            /* ServiceErrorGenerator.kt:207 */
   93    127   
            crate::operation::complete_snapshot::CompleteSnapshotError::InternalServerError(inner) => Error::InternalServerError(inner),
         128  +
            /* ServiceErrorGenerator.kt:207 */
   94    129   
            crate::operation::complete_snapshot::CompleteSnapshotError::RequestThrottledError(inner) => Error::RequestThrottledError(inner),
         130  +
            /* ServiceErrorGenerator.kt:207 */
   95    131   
            crate::operation::complete_snapshot::CompleteSnapshotError::ResourceNotFoundError(inner) => Error::ResourceNotFoundError(inner),
         132  +
            /* ServiceErrorGenerator.kt:207 */
   96    133   
            crate::operation::complete_snapshot::CompleteSnapshotError::ServiceQuotaExceededError(inner) => Error::ServiceQuotaExceededError(inner),
         134  +
            /* ServiceErrorGenerator.kt:207 */
   97    135   
            crate::operation::complete_snapshot::CompleteSnapshotError::ValidationError(inner) => Error::ValidationError(inner),
         136  +
            /* ServiceErrorGenerator.kt:212 */
   98    137   
            crate::operation::complete_snapshot::CompleteSnapshotError::Unhandled(inner) => Error::Unhandled(inner),
         138  +
            /* ServiceErrorGenerator.kt:204 */
   99    139   
        }
         140  +
        /* ServiceErrorGenerator.kt:203 */
  100    141   
    }
         142  +
    /* ServiceErrorGenerator.kt:202 */
  101    143   
}
         144  +
/* ServiceErrorGenerator.kt:174 */
  102    145   
impl<R> From<::aws_smithy_runtime_api::client::result::SdkError<crate::operation::get_snapshot_block::GetSnapshotBlockError, R>> for Error
  103    146   
where
  104    147   
    R: Send + Sync + std::fmt::Debug + 'static,
  105    148   
{
         149  +
    /* ServiceErrorGenerator.kt:179 */
  106    150   
    fn from(err: ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::get_snapshot_block::GetSnapshotBlockError, R>) -> Self {
         151  +
        /* ServiceErrorGenerator.kt:184 */
  107    152   
        match err {
         153  +
            /* ServiceErrorGenerator.kt:185 */
  108    154   
            ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
         155  +
            /* ServiceErrorGenerator.kt:186 */
  109    156   
            _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
  110    157   
                meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
  111    158   
                source: err.into(),
  112    159   
            }),
         160  +
            /* ServiceErrorGenerator.kt:184 */
  113    161   
        }
         162  +
        /* ServiceErrorGenerator.kt:179 */
  114    163   
    }
         164  +
    /* ServiceErrorGenerator.kt:174 */
  115    165   
}
         166  +
/* ServiceErrorGenerator.kt:202 */
  116    167   
impl From<crate::operation::get_snapshot_block::GetSnapshotBlockError> for Error {
         168  +
    /* ServiceErrorGenerator.kt:203 */
  117    169   
    fn from(err: crate::operation::get_snapshot_block::GetSnapshotBlockError) -> Self {
         170  +
        /* ServiceErrorGenerator.kt:204 */
  118    171   
        match err {
         172  +
            /* ServiceErrorGenerator.kt:207 */
  119    173   
            crate::operation::get_snapshot_block::GetSnapshotBlockError::AccessDeniedError(inner) => Error::AccessDeniedError(inner),
         174  +
            /* ServiceErrorGenerator.kt:207 */
  120    175   
            crate::operation::get_snapshot_block::GetSnapshotBlockError::InternalServerError(inner) => Error::InternalServerError(inner),
         176  +
            /* ServiceErrorGenerator.kt:207 */
  121    177   
            crate::operation::get_snapshot_block::GetSnapshotBlockError::RequestThrottledError(inner) => Error::RequestThrottledError(inner),
         178  +
            /* ServiceErrorGenerator.kt:207 */
  122    179   
            crate::operation::get_snapshot_block::GetSnapshotBlockError::ResourceNotFoundError(inner) => Error::ResourceNotFoundError(inner),
         180  +
            /* ServiceErrorGenerator.kt:207 */
  123    181   
            crate::operation::get_snapshot_block::GetSnapshotBlockError::ServiceQuotaExceededError(inner) => Error::ServiceQuotaExceededError(inner),
         182  +
            /* ServiceErrorGenerator.kt:207 */
  124    183   
            crate::operation::get_snapshot_block::GetSnapshotBlockError::ValidationError(inner) => Error::ValidationError(inner),
         184  +
            /* ServiceErrorGenerator.kt:212 */
  125    185   
            crate::operation::get_snapshot_block::GetSnapshotBlockError::Unhandled(inner) => Error::Unhandled(inner),
         186  +
            /* ServiceErrorGenerator.kt:204 */
  126    187   
        }
         188  +
        /* ServiceErrorGenerator.kt:203 */
  127    189   
    }
         190  +
    /* ServiceErrorGenerator.kt:202 */
  128    191   
}
         192  +
/* ServiceErrorGenerator.kt:174 */
  129    193   
impl<R> From<::aws_smithy_runtime_api::client::result::SdkError<crate::operation::list_changed_blocks::ListChangedBlocksError, R>> for Error
  130    194   
where
  131    195   
    R: Send + Sync + std::fmt::Debug + 'static,
  132    196   
{
         197  +
    /* ServiceErrorGenerator.kt:179 */
  133    198   
    fn from(err: ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::list_changed_blocks::ListChangedBlocksError, R>) -> Self {
         199  +
        /* ServiceErrorGenerator.kt:184 */
  134    200   
        match err {
         201  +
            /* ServiceErrorGenerator.kt:185 */
  135    202   
            ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
         203  +
            /* ServiceErrorGenerator.kt:186 */
  136    204   
            _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
  137    205   
                meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
  138    206   
                source: err.into(),
  139    207   
            }),
         208  +
            /* ServiceErrorGenerator.kt:184 */
  140    209   
        }
         210  +
        /* ServiceErrorGenerator.kt:179 */
  141    211   
    }
         212  +
    /* ServiceErrorGenerator.kt:174 */
  142    213   
}
         214  +
/* ServiceErrorGenerator.kt:202 */
  143    215   
impl From<crate::operation::list_changed_blocks::ListChangedBlocksError> for Error {
         216  +
    /* ServiceErrorGenerator.kt:203 */
  144    217   
    fn from(err: crate::operation::list_changed_blocks::ListChangedBlocksError) -> Self {
         218  +
        /* ServiceErrorGenerator.kt:204 */
  145    219   
        match err {
         220  +
            /* ServiceErrorGenerator.kt:207 */
  146    221   
            crate::operation::list_changed_blocks::ListChangedBlocksError::AccessDeniedError(inner) => Error::AccessDeniedError(inner),
         222  +
            /* ServiceErrorGenerator.kt:207 */
  147    223   
            crate::operation::list_changed_blocks::ListChangedBlocksError::InternalServerError(inner) => Error::InternalServerError(inner),
         224  +
            /* ServiceErrorGenerator.kt:207 */
  148    225   
            crate::operation::list_changed_blocks::ListChangedBlocksError::RequestThrottledError(inner) => Error::RequestThrottledError(inner),
         226  +
            /* ServiceErrorGenerator.kt:207 */
  149    227   
            crate::operation::list_changed_blocks::ListChangedBlocksError::ResourceNotFoundError(inner) => Error::ResourceNotFoundError(inner),
         228  +
            /* ServiceErrorGenerator.kt:207 */
  150    229   
            crate::operation::list_changed_blocks::ListChangedBlocksError::ServiceQuotaExceededError(inner) => {
  151    230   
                Error::ServiceQuotaExceededError(inner)
  152    231   
            }
         232  +
            /* ServiceErrorGenerator.kt:207 */
  153    233   
            crate::operation::list_changed_blocks::ListChangedBlocksError::ValidationError(inner) => Error::ValidationError(inner),
         234  +
            /* ServiceErrorGenerator.kt:212 */
  154    235   
            crate::operation::list_changed_blocks::ListChangedBlocksError::Unhandled(inner) => Error::Unhandled(inner),
         236  +
            /* ServiceErrorGenerator.kt:204 */
  155    237   
        }
         238  +
        /* ServiceErrorGenerator.kt:203 */
  156    239   
    }
         240  +
    /* ServiceErrorGenerator.kt:202 */
  157    241   
}
         242  +
/* ServiceErrorGenerator.kt:174 */
  158    243   
impl<R> From<::aws_smithy_runtime_api::client::result::SdkError<crate::operation::list_snapshot_blocks::ListSnapshotBlocksError, R>> for Error
  159    244   
where
  160    245   
    R: Send + Sync + std::fmt::Debug + 'static,
  161    246   
{
         247  +
    /* ServiceErrorGenerator.kt:179 */
  162    248   
    fn from(err: ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::list_snapshot_blocks::ListSnapshotBlocksError, R>) -> Self {
         249  +
        /* ServiceErrorGenerator.kt:184 */
  163    250   
        match err {
         251  +
            /* ServiceErrorGenerator.kt:185 */
  164    252   
            ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
         253  +
            /* ServiceErrorGenerator.kt:186 */
  165    254   
            _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
  166    255   
                meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
  167    256   
                source: err.into(),
  168    257   
            }),
         258  +
            /* ServiceErrorGenerator.kt:184 */
  169    259   
        }
         260  +
        /* ServiceErrorGenerator.kt:179 */
  170    261   
    }
         262  +
    /* ServiceErrorGenerator.kt:174 */
  171    263   
}
         264  +
/* ServiceErrorGenerator.kt:202 */
  172    265   
impl From<crate::operation::list_snapshot_blocks::ListSnapshotBlocksError> for Error {
         266  +
    /* ServiceErrorGenerator.kt:203 */
  173    267   
    fn from(err: crate::operation::list_snapshot_blocks::ListSnapshotBlocksError) -> Self {
         268  +
        /* ServiceErrorGenerator.kt:204 */
  174    269   
        match err {
         270  +
            /* ServiceErrorGenerator.kt:207 */
  175    271   
            crate::operation::list_snapshot_blocks::ListSnapshotBlocksError::AccessDeniedError(inner) => Error::AccessDeniedError(inner),
         272  +
            /* ServiceErrorGenerator.kt:207 */
  176    273   
            crate::operation::list_snapshot_blocks::ListSnapshotBlocksError::InternalServerError(inner) => Error::InternalServerError(inner),
         274  +
            /* ServiceErrorGenerator.kt:207 */
  177    275   
            crate::operation::list_snapshot_blocks::ListSnapshotBlocksError::RequestThrottledError(inner) => Error::RequestThrottledError(inner),
         276  +
            /* ServiceErrorGenerator.kt:207 */
  178    277   
            crate::operation::list_snapshot_blocks::ListSnapshotBlocksError::ResourceNotFoundError(inner) => Error::ResourceNotFoundError(inner),
         278  +
            /* ServiceErrorGenerator.kt:207 */
  179    279   
            crate::operation::list_snapshot_blocks::ListSnapshotBlocksError::ServiceQuotaExceededError(inner) => {
  180    280   
                Error::ServiceQuotaExceededError(inner)
  181    281   
            }
         282  +
            /* ServiceErrorGenerator.kt:207 */
  182    283   
            crate::operation::list_snapshot_blocks::ListSnapshotBlocksError::ValidationError(inner) => Error::ValidationError(inner),
         284  +
            /* ServiceErrorGenerator.kt:212 */
  183    285   
            crate::operation::list_snapshot_blocks::ListSnapshotBlocksError::Unhandled(inner) => Error::Unhandled(inner),
         286  +
            /* ServiceErrorGenerator.kt:204 */
  184    287   
        }
         288  +
        /* ServiceErrorGenerator.kt:203 */
  185    289   
    }
         290  +
    /* ServiceErrorGenerator.kt:202 */
  186    291   
}
         292  +
/* ServiceErrorGenerator.kt:174 */
  187    293   
impl<R> From<::aws_smithy_runtime_api::client::result::SdkError<crate::operation::put_snapshot_block::PutSnapshotBlockError, R>> for Error
  188    294   
where
  189    295   
    R: Send + Sync + std::fmt::Debug + 'static,
  190    296   
{
         297  +
    /* ServiceErrorGenerator.kt:179 */
  191    298   
    fn from(err: ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::put_snapshot_block::PutSnapshotBlockError, R>) -> Self {
         299  +
        /* ServiceErrorGenerator.kt:184 */
  192    300   
        match err {
         301  +
            /* ServiceErrorGenerator.kt:185 */
  193    302   
            ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
         303  +
            /* ServiceErrorGenerator.kt:186 */
  194    304   
            _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
  195    305   
                meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
  196    306   
                source: err.into(),
  197    307   
            }),
         308  +
            /* ServiceErrorGenerator.kt:184 */
  198    309   
        }
         310  +
        /* ServiceErrorGenerator.kt:179 */
  199    311   
    }
         312  +
    /* ServiceErrorGenerator.kt:174 */
  200    313   
}
         314  +
/* ServiceErrorGenerator.kt:202 */
  201    315   
impl From<crate::operation::put_snapshot_block::PutSnapshotBlockError> for Error {
         316  +
    /* ServiceErrorGenerator.kt:203 */
  202    317   
    fn from(err: crate::operation::put_snapshot_block::PutSnapshotBlockError) -> Self {
         318  +
        /* ServiceErrorGenerator.kt:204 */
  203    319   
        match err {
         320  +
            /* ServiceErrorGenerator.kt:207 */
  204    321   
            crate::operation::put_snapshot_block::PutSnapshotBlockError::AccessDeniedError(inner) => Error::AccessDeniedError(inner),
         322  +
            /* ServiceErrorGenerator.kt:207 */
  205    323   
            crate::operation::put_snapshot_block::PutSnapshotBlockError::InternalServerError(inner) => Error::InternalServerError(inner),
         324  +
            /* ServiceErrorGenerator.kt:207 */
  206    325   
            crate::operation::put_snapshot_block::PutSnapshotBlockError::RequestThrottledError(inner) => Error::RequestThrottledError(inner),
         326  +
            /* ServiceErrorGenerator.kt:207 */
  207    327   
            crate::operation::put_snapshot_block::PutSnapshotBlockError::ResourceNotFoundError(inner) => Error::ResourceNotFoundError(inner),
         328  +
            /* ServiceErrorGenerator.kt:207 */
  208    329   
            crate::operation::put_snapshot_block::PutSnapshotBlockError::ServiceQuotaExceededError(inner) => Error::ServiceQuotaExceededError(inner),
         330  +
            /* ServiceErrorGenerator.kt:207 */
  209    331   
            crate::operation::put_snapshot_block::PutSnapshotBlockError::ValidationError(inner) => Error::ValidationError(inner),
         332  +
            /* ServiceErrorGenerator.kt:212 */
  210    333   
            crate::operation::put_snapshot_block::PutSnapshotBlockError::Unhandled(inner) => Error::Unhandled(inner),
         334  +
            /* ServiceErrorGenerator.kt:204 */
  211    335   
        }
         336  +
        /* ServiceErrorGenerator.kt:203 */
  212    337   
    }
         338  +
    /* ServiceErrorGenerator.kt:202 */
  213    339   
}
         340  +
/* ServiceErrorGenerator.kt:174 */
  214    341   
impl<R> From<::aws_smithy_runtime_api::client::result::SdkError<crate::operation::start_snapshot::StartSnapshotError, R>> for Error
  215    342   
where
  216    343   
    R: Send + Sync + std::fmt::Debug + 'static,
  217    344   
{
         345  +
    /* ServiceErrorGenerator.kt:179 */
  218    346   
    fn from(err: ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::start_snapshot::StartSnapshotError, R>) -> Self {
         347  +
        /* ServiceErrorGenerator.kt:184 */
  219    348   
        match err {
         349  +
            /* ServiceErrorGenerator.kt:185 */
  220    350   
            ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
         351  +
            /* ServiceErrorGenerator.kt:186 */
  221    352   
            _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
  222    353   
                meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
  223    354   
                source: err.into(),
  224    355   
            }),
         356  +
            /* ServiceErrorGenerator.kt:184 */
  225    357   
        }
         358  +
        /* ServiceErrorGenerator.kt:179 */
  226    359   
    }
         360  +
    /* ServiceErrorGenerator.kt:174 */
  227    361   
}
         362  +
/* ServiceErrorGenerator.kt:202 */
  228    363   
impl From<crate::operation::start_snapshot::StartSnapshotError> for Error {
         364  +
    /* ServiceErrorGenerator.kt:203 */
  229    365   
    fn from(err: crate::operation::start_snapshot::StartSnapshotError) -> Self {
         366  +
        /* ServiceErrorGenerator.kt:204 */
  230    367   
        match err {
         368  +
            /* ServiceErrorGenerator.kt:207 */
  231    369   
            crate::operation::start_snapshot::StartSnapshotError::AccessDeniedError(inner) => Error::AccessDeniedError(inner),
         370  +
            /* ServiceErrorGenerator.kt:207 */
  232    371   
            crate::operation::start_snapshot::StartSnapshotError::ConcurrentLimitExceededError(inner) => Error::ConcurrentLimitExceededError(inner),
         372  +
            /* ServiceErrorGenerator.kt:207 */
  233    373   
            crate::operation::start_snapshot::StartSnapshotError::ConflictError(inner) => Error::ConflictError(inner),
         374  +
            /* ServiceErrorGenerator.kt:207 */
  234    375   
            crate::operation::start_snapshot::StartSnapshotError::InternalServerError(inner) => Error::InternalServerError(inner),
         376  +
            /* ServiceErrorGenerator.kt:207 */
  235    377   
            crate::operation::start_snapshot::StartSnapshotError::RequestThrottledError(inner) => Error::RequestThrottledError(inner),
         378  +
            /* ServiceErrorGenerator.kt:207 */
  236    379   
            crate::operation::start_snapshot::StartSnapshotError::ResourceNotFoundError(inner) => Error::ResourceNotFoundError(inner),
         380  +
            /* ServiceErrorGenerator.kt:207 */
  237    381   
            crate::operation::start_snapshot::StartSnapshotError::ServiceQuotaExceededError(inner) => Error::ServiceQuotaExceededError(inner),
         382  +
            /* ServiceErrorGenerator.kt:207 */
  238    383   
            crate::operation::start_snapshot::StartSnapshotError::ValidationError(inner) => Error::ValidationError(inner),
         384  +
            /* ServiceErrorGenerator.kt:212 */
  239    385   
            crate::operation::start_snapshot::StartSnapshotError::Unhandled(inner) => Error::Unhandled(inner),
         386  +
            /* ServiceErrorGenerator.kt:204 */
  240    387   
        }
         388  +
        /* ServiceErrorGenerator.kt:203 */
  241    389   
    }
         390  +
    /* ServiceErrorGenerator.kt:202 */
  242    391   
}
         392  +
/* ServiceErrorGenerator.kt:115 */
  243    393   
impl ::std::error::Error for Error {
         394  +
    /* ServiceErrorGenerator.kt:116 */
  244    395   
    fn source(&self) -> std::option::Option<&(dyn ::std::error::Error + 'static)> {
         396  +
        /* ServiceErrorGenerator.kt:117 */
  245    397   
        match self {
  246         -
            Error::AccessDeniedError(inner) => inner.source(),
  247         -
            Error::ConcurrentLimitExceededError(inner) => inner.source(),
  248         -
            Error::ConflictError(inner) => inner.source(),
  249         -
            Error::InternalServerError(inner) => inner.source(),
  250         -
            Error::RequestThrottledError(inner) => inner.source(),
  251         -
            Error::ResourceNotFoundError(inner) => inner.source(),
  252         -
            Error::ServiceQuotaExceededError(inner) => inner.source(),
  253         -
            Error::ValidationError(inner) => inner.source(),
  254         -
            Error::Unhandled(inner) => ::std::option::Option::Some(&*inner.source),
         398  +
            /* ServiceErrorGenerator.kt:119 */ Error::AccessDeniedError(inner) => inner.source(),
         399  +
            /* ServiceErrorGenerator.kt:119 */ Error::ConcurrentLimitExceededError(inner) => inner.source(),
         400  +
            /* ServiceErrorGenerator.kt:119 */ Error::ConflictError(inner) => inner.source(),
         401  +
            /* ServiceErrorGenerator.kt:119 */ Error::InternalServerError(inner) => inner.source(),
         402  +
            /* ServiceErrorGenerator.kt:119 */ Error::RequestThrottledError(inner) => inner.source(),
         403  +
            /* ServiceErrorGenerator.kt:119 */ Error::ResourceNotFoundError(inner) => inner.source(),
         404  +
            /* ServiceErrorGenerator.kt:119 */ Error::ServiceQuotaExceededError(inner) => inner.source(),
         405  +
            /* ServiceErrorGenerator.kt:119 */ Error::ValidationError(inner) => inner.source(),
         406  +
            /* ServiceErrorGenerator.kt:121 */
         407  +
            Error::Unhandled(inner) => ::std::option::Option::Some(&*inner.source), /* ServiceErrorGenerator.kt:117 */
  255    408   
        }
         409  +
        /* ServiceErrorGenerator.kt:116 */
  256    410   
    }
         411  +
    /* ServiceErrorGenerator.kt:115 */
  257    412   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/lens.rs

@@ -1,1 +20,22 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/* NestedAccessorGenerator.kt:63 */
    2      3   
pub(crate) fn reflens_list_changed_blocks_output_output_next_token(
    3      4   
    input: &crate::operation::list_changed_blocks::ListChangedBlocksOutput,
    4      5   
) -> ::std::option::Option<&::std::string::String> {
    5      6   
    let input = match &input.next_token {
    6      7   
        ::std::option::Option::None => return ::std::option::Option::None,
    7      8   
        ::std::option::Option::Some(t) => t,
    8      9   
    };
    9     10   
    ::std::option::Option::Some(input)
   10     11   
}
   11     12   
          13  +
/* NestedAccessorGenerator.kt:63 */
   12     14   
pub(crate) fn reflens_list_snapshot_blocks_output_output_next_token(
   13     15   
    input: &crate::operation::list_snapshot_blocks::ListSnapshotBlocksOutput,
   14     16   
) -> ::std::option::Option<&::std::string::String> {
   15     17   
    let input = match &input.next_token {
   16     18   
        ::std::option::Option::None => return ::std::option::Option::None,
   17     19   
        ::std::option::Option::Some(t) => t,
   18     20   
    };
   19     21   
    ::std::option::Option::Some(input)
   20     22   
}

tmp-codegen-diff/codegen-client-test/ebs/rust-client-codegen/src/lib.rs

@@ -37,37 +157,169 @@
   57     57   
//! The [`operation`](crate::operation) module has a submodule for every API, and in each submodule
   58     58   
//! is the input, output, and error type for that API, as well as builders to construct each of those.
   59     59   
//!
   60     60   
//! There is a top-level [`Error`](crate::Error) type that encompasses all the errors that the
   61     61   
//! client can return. Any other error type can be converted to this `Error` type via the
   62     62   
//! [`From`](std::convert::From) trait.
   63     63   
//!
   64     64   
//! The other modules within this crate are not required for normal usage.
   65     65   
   66     66   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
          67  +
/* ServiceErrorGenerator.kt:127 */
   67     68   
pub use error_meta::Error;
   68     69   
          70  +
/* RustType.kt:516 */
   69     71   
#[doc(inline)]
          72  +
/* ServiceGenerator.kt:63 */
   70     73   
pub use config::Config;
   71     74   
   72         -
/// Client for calling Amazon Elastic Block Store.
          75  +
/// /* FluentClientDocs.kt:24 */Client for calling Amazon Elastic Block Store.
   73     76   
///
   74     77   
/// ## Constructing a `Client`
   75     78   
///
   76     79   
/// A `Client` requires a config in order to be constructed. With the default set of Cargo features,
   77     80   
/// this config will only require an endpoint to produce a functioning client. However, some Smithy
   78     81   
/// features will require additional configuration. For example, `@auth` requires some kind of identity
   79     82   
/// or identity resolver to be configured. The config is used to customize various aspects of the client,
   80     83   
/// such as:
   81     84   
///
   82     85   
///   - [The underlying HTTP client](crate::config::Builder::http_client)
   83     86   
///   - [Retries](crate::config::Builder::retry_config)
   84     87   
///   - [Timeouts](crate::config::Builder::timeout_config)
   85     88   
///   - [... and more](crate::config::Builder)
   86     89   
///
   87     90   
/// Below is a minimal example of how to create a client:
   88     91   
///
   89     92   
/// ```rust,no_run
   90     93   
/// let config = ebs::Config::builder()
   91     94   
///     .endpoint_url("http://localhost:1234")
   92     95   
///     .build();
   93     96   
/// let client = ebs::Client::from_conf(config);
   94     97   
/// ```
   95     98   
///
   96     99   
/// _Note:_ Client construction is expensive due to connection thread pool initialization, and should be done
   97    100   
/// once at application start-up. Cloning a client is cheap (it's just an [`Arc`](std::sync::Arc) under the hood),
   98    101   
/// so creating it once at start-up and cloning it around the application as needed is recommended.
   99         -
/// # Using the `Client`
         102  +
/// /* FluentClientDocs.kt:79 */# Using the `Client`
  100    103   
///
  101    104   
/// A client has a function for every operation that can be performed by the service.
  102    105   
/// For example, the [`CompleteSnapshot`](crate::operation::complete_snapshot) operation has
  103    106   
/// a [`Client::complete_snapshot`], function which returns a builder for that operation.
  104    107   
/// The fluent builder ultimately has a `send()` function that returns an async future that
  105    108   
/// returns a result, as illustrated below:
  106    109   
///
  107    110   
/// ```rust,ignore
  108    111   
/// let result = client.complete_snapshot()
  109    112   
///     .checksum_aggregation_method("example")
  110    113   
///     .send()
  111    114   
///     .await;
  112    115   
/// ```
  113    116   
///
  114    117   
/// The underlying HTTP requests that get made by this can be modified with the `customize_operation`
  115    118   
/// function on the fluent builder. See the [`customize`](crate::client::customize) module for more
  116    119   
/// information.
  117    120   
pub mod client;
  118    121   
  119         -
/// Configuration for Amazon Elastic Block Store.
         122  +
/// /* ClientRustModule.kt:121 */Configuration for Amazon Elastic Block Store.
  120    123   
pub mod config;
  121    124   
  122         -
/// Common errors and error handling utilities.
         125  +
/// /* ClientRustModule.kt:121 */Common errors and error handling utilities.
  123    126   
pub mod error;
  124    127   
         128  +
/* RustModule.kt:172 */
  125    129   
mod error_meta;
  126    130   
  127         -
/// Information about this crate.
         131  +
/// /* ClientRustModule.kt:121 */Information about this crate.
  128    132   
pub mod meta;
  129    133   
  130         -
/// Primitives such as `Blob` or `DateTime` used by other types.
         134  +
/// /* ClientRustModule.kt:121 */Primitives such as `Blob` or `DateTime` used by other types.
  131    135   
pub mod primitives;
  132    136   
  133         -
/// Data structures used by operation inputs/outputs.
         137  +
/// /* ClientRustModule.kt:121 */Data structures used by operation inputs/outputs.
  134    138   
pub mod types;
  135    139   
         140  +
/* RustModule.kt:172 */
  136    141   
mod auth_plugin;
  137    142   
  138    143   
pub(crate) mod client_idempotency_token;
  139    144   
         145  +
/* RustModule.kt:172 */
  140    146   
mod idempotency_token;
  141    147   
  142         -
/// All operations that this crate can perform.
         148  +
/// /* ClientRustModule.kt:121 */All operations that this crate can perform.
  143    149   
pub mod operation;
  144    150   
  145    151   
pub(crate) mod protocol_serde;
  146    152   
         153  +
/* RustModule.kt:172 */
  147    154   
mod sdk_feature_tracker;
  148    155   
         156  +
/* RustModule.kt:172 */
  149    157   
mod serialization_settings;
  150    158   
         159  +
/* RustModule.kt:172 */
  151    160   
mod lens;
  152    161   
         162  +
/* RustModule.kt:172 */
  153    163   
mod serde_util;
  154    164   
         165  +
/* RustModule.kt:172 */
  155    166   
mod json_errors;
  156    167   
         168  +
/* FluentClientDecorator.kt:76 */
  157    169   
pub use client::Client;