aws_sdk_quicksight/operation/
delete_iam_policy_assignment.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DeleteIAMPolicyAssignment`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DeleteIAMPolicyAssignment;
6impl DeleteIAMPolicyAssignment {
7    /// Creates a new `DeleteIAMPolicyAssignment`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::delete_iam_policy_assignment::DeleteIamPolicyAssignmentInput,
14    ) -> ::std::result::Result<
15        crate::operation::delete_iam_policy_assignment::DeleteIamPolicyAssignmentOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::delete_iam_policy_assignment::DeleteIAMPolicyAssignmentError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::delete_iam_policy_assignment::DeleteIAMPolicyAssignmentError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::delete_iam_policy_assignment::DeleteIamPolicyAssignmentOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::delete_iam_policy_assignment::DeleteIamPolicyAssignmentInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "QuickSight",
56            "DeleteIAMPolicyAssignment",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "QuickSight.DeleteIAMPolicyAssignment",
65            "rpc.service" = "QuickSight",
66            "rpc.method" = "DeleteIAMPolicyAssignment",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
80            ::aws_runtime::auth::sigv4::SCHEME_ID,
81        ]));
82        if let ::std::option::Option::Some(config_override) = config_override {
83            for plugin in config_override.runtime_plugins.iter().cloned() {
84                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
85            }
86            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
87                config_override,
88                client_config.config.clone(),
89                &client_config.runtime_components,
90            ));
91        }
92        runtime_plugins
93    }
94}
95impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for DeleteIAMPolicyAssignment {
96    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
97        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DeleteIAMPolicyAssignment");
98
99        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
100            DeleteIAMPolicyAssignmentRequestSerializer,
101        ));
102        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
103            DeleteIAMPolicyAssignmentResponseDeserializer,
104        ));
105
106        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
107            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
108        ));
109
110        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
111            "DeleteIAMPolicyAssignment",
112            "QuickSight",
113        ));
114        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
115        signing_options.double_uri_encode = true;
116        signing_options.content_sha256_header = false;
117        signing_options.normalize_uri_path = true;
118        signing_options.payload_override = None;
119
120        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
121            signing_options,
122            ..::std::default::Default::default()
123        });
124
125        ::std::option::Option::Some(cfg.freeze())
126    }
127
128    fn runtime_components(
129        &self,
130        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
131    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
132        #[allow(unused_mut)]
133        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DeleteIAMPolicyAssignment")
134            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
135            .with_interceptor(DeleteIAMPolicyAssignmentEndpointParamsInterceptor)
136            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
137                crate::operation::delete_iam_policy_assignment::DeleteIAMPolicyAssignmentError,
138            >::new())
139            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
140                crate::operation::delete_iam_policy_assignment::DeleteIAMPolicyAssignmentError,
141            >::new())
142            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
143                crate::operation::delete_iam_policy_assignment::DeleteIAMPolicyAssignmentError,
144            >::new());
145
146        ::std::borrow::Cow::Owned(rcb)
147    }
148}
149
150#[derive(Debug)]
151struct DeleteIAMPolicyAssignmentResponseDeserializer;
152impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DeleteIAMPolicyAssignmentResponseDeserializer {
153    fn deserialize_nonstreaming(
154        &self,
155        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
156    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
157        let (success, status) = (response.status().is_success(), response.status().as_u16());
158        let headers = response.headers();
159        let body = response.body().bytes().expect("body loaded");
160        #[allow(unused_mut)]
161        let mut force_error = false;
162        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
163        let parse_result = if !success && status != 200 || force_error {
164            crate::protocol_serde::shape_delete_iam_policy_assignment::de_delete_iam_policy_assignment_http_error(status, headers, body)
165        } else {
166            crate::protocol_serde::shape_delete_iam_policy_assignment::de_delete_iam_policy_assignment_http_response(status, headers, body)
167        };
168        crate::protocol_serde::type_erase_result(parse_result)
169    }
170}
171#[derive(Debug)]
172struct DeleteIAMPolicyAssignmentRequestSerializer;
173impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DeleteIAMPolicyAssignmentRequestSerializer {
174    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
175    fn serialize_input(
176        &self,
177        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
178        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
179    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
180        let input = input
181            .downcast::<crate::operation::delete_iam_policy_assignment::DeleteIamPolicyAssignmentInput>()
182            .expect("correct type");
183        let _header_serialization_settings = _cfg
184            .load::<crate::serialization_settings::HeaderSerializationSettings>()
185            .cloned()
186            .unwrap_or_default();
187        let mut request_builder = {
188            fn uri_base(
189                _input: &crate::operation::delete_iam_policy_assignment::DeleteIamPolicyAssignmentInput,
190                output: &mut ::std::string::String,
191            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
192                use ::std::fmt::Write as _;
193                let input_1 = &_input.aws_account_id;
194                let input_1 = input_1
195                    .as_ref()
196                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("aws_account_id", "cannot be empty or unset"))?;
197                let aws_account_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
198                if aws_account_id.is_empty() {
199                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
200                        "aws_account_id",
201                        "cannot be empty or unset",
202                    ));
203                }
204                let input_2 = &_input.namespace;
205                let input_2 = input_2
206                    .as_ref()
207                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("namespace", "cannot be empty or unset"))?;
208                let namespace = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
209                if namespace.is_empty() {
210                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
211                        "namespace",
212                        "cannot be empty or unset",
213                    ));
214                }
215                let input_3 = &_input.assignment_name;
216                let input_3 = input_3
217                    .as_ref()
218                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("assignment_name", "cannot be empty or unset"))?;
219                let assignment_name = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
220                if assignment_name.is_empty() {
221                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
222                        "assignment_name",
223                        "cannot be empty or unset",
224                    ));
225                }
226                ::std::write!(
227                    output,
228                    "/accounts/{AwsAccountId}/namespace/{Namespace}/iam-policy-assignments/{AssignmentName}",
229                    AwsAccountId = aws_account_id,
230                    Namespace = namespace,
231                    AssignmentName = assignment_name
232                )
233                .expect("formatting should succeed");
234                ::std::result::Result::Ok(())
235            }
236            #[allow(clippy::unnecessary_wraps)]
237            fn update_http_builder(
238                input: &crate::operation::delete_iam_policy_assignment::DeleteIamPolicyAssignmentInput,
239                builder: ::http::request::Builder,
240            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
241                let mut uri = ::std::string::String::new();
242                uri_base(input, &mut uri)?;
243                ::std::result::Result::Ok(builder.method("DELETE").uri(uri))
244            }
245            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
246            builder
247        };
248        let body = ::aws_smithy_types::body::SdkBody::from("");
249
250        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
251    }
252}
253#[derive(Debug)]
254struct DeleteIAMPolicyAssignmentEndpointParamsInterceptor;
255
256impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DeleteIAMPolicyAssignmentEndpointParamsInterceptor {
257    fn name(&self) -> &'static str {
258        "DeleteIAMPolicyAssignmentEndpointParamsInterceptor"
259    }
260
261    fn read_before_execution(
262        &self,
263        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
264            '_,
265            ::aws_smithy_runtime_api::client::interceptors::context::Input,
266            ::aws_smithy_runtime_api::client::interceptors::context::Output,
267            ::aws_smithy_runtime_api::client::interceptors::context::Error,
268        >,
269        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
270    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
271        let _input = context
272            .input()
273            .downcast_ref::<DeleteIamPolicyAssignmentInput>()
274            .ok_or("failed to downcast to DeleteIamPolicyAssignmentInput")?;
275
276        let params = crate::config::endpoint::Params::builder()
277            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
278            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
279            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
280            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
281            .build()
282            .map_err(|err| {
283                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
284            })?;
285        cfg.interceptor_state()
286            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
287        ::std::result::Result::Ok(())
288    }
289}
290
291// The get_* functions below are generated from JMESPath expressions in the
292// operationContextParams trait. They target the operation's input shape.
293
294/// Error type for the `DeleteIAMPolicyAssignmentError` operation.
295#[non_exhaustive]
296#[derive(::std::fmt::Debug)]
297pub enum DeleteIAMPolicyAssignmentError {
298    /// <p>You don't have access to this item. The provided credentials couldn't be validated. You might not be authorized to carry out the request. Make sure that your account is authorized to use the Amazon QuickSight service, that your policies have the correct permissions, and that you are using the correct credentials.</p>
299    AccessDeniedException(crate::types::error::AccessDeniedException),
300    /// <p>A resource is already in a state that indicates an operation is happening that must complete before a new update can be applied.</p>
301    ConcurrentUpdatingException(crate::types::error::ConcurrentUpdatingException),
302    /// <p>An internal failure occurred.</p>
303    InternalFailureException(crate::types::error::InternalFailureException),
304    /// <p>One or more parameters has a value that isn't valid.</p>
305    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
306    /// <p>The resource specified already exists.</p>
307    ResourceExistsException(crate::types::error::ResourceExistsException),
308    /// <p>One or more resources can't be found.</p>
309    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
310    /// <p>Access is throttled.</p>
311    ThrottlingException(crate::types::error::ThrottlingException),
312    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
313    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
314    variable wildcard pattern and check `.code()`:
315     \
316    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
317     \
318    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DeleteIAMPolicyAssignmentError) for what information is available for the error.")]
319    Unhandled(crate::error::sealed_unhandled::Unhandled),
320}
321impl DeleteIAMPolicyAssignmentError {
322    /// Creates the `DeleteIAMPolicyAssignmentError::Unhandled` variant from any error type.
323    pub fn unhandled(
324        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
325    ) -> Self {
326        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
327            source: err.into(),
328            meta: ::std::default::Default::default(),
329        })
330    }
331
332    /// Creates the `DeleteIAMPolicyAssignmentError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
333    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
334        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
335            source: err.clone().into(),
336            meta: err,
337        })
338    }
339    ///
340    /// Returns error metadata, which includes the error code, message,
341    /// request ID, and potentially additional information.
342    ///
343    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
344        match self {
345            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
346            Self::ConcurrentUpdatingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
347            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
348            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
349            Self::ResourceExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
350            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
351            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
352            Self::Unhandled(e) => &e.meta,
353        }
354    }
355    /// Returns `true` if the error kind is `DeleteIAMPolicyAssignmentError::AccessDeniedException`.
356    pub fn is_access_denied_exception(&self) -> bool {
357        matches!(self, Self::AccessDeniedException(_))
358    }
359    /// Returns `true` if the error kind is `DeleteIAMPolicyAssignmentError::ConcurrentUpdatingException`.
360    pub fn is_concurrent_updating_exception(&self) -> bool {
361        matches!(self, Self::ConcurrentUpdatingException(_))
362    }
363    /// Returns `true` if the error kind is `DeleteIAMPolicyAssignmentError::InternalFailureException`.
364    pub fn is_internal_failure_exception(&self) -> bool {
365        matches!(self, Self::InternalFailureException(_))
366    }
367    /// Returns `true` if the error kind is `DeleteIAMPolicyAssignmentError::InvalidParameterValueException`.
368    pub fn is_invalid_parameter_value_exception(&self) -> bool {
369        matches!(self, Self::InvalidParameterValueException(_))
370    }
371    /// Returns `true` if the error kind is `DeleteIAMPolicyAssignmentError::ResourceExistsException`.
372    pub fn is_resource_exists_exception(&self) -> bool {
373        matches!(self, Self::ResourceExistsException(_))
374    }
375    /// Returns `true` if the error kind is `DeleteIAMPolicyAssignmentError::ResourceNotFoundException`.
376    pub fn is_resource_not_found_exception(&self) -> bool {
377        matches!(self, Self::ResourceNotFoundException(_))
378    }
379    /// Returns `true` if the error kind is `DeleteIAMPolicyAssignmentError::ThrottlingException`.
380    pub fn is_throttling_exception(&self) -> bool {
381        matches!(self, Self::ThrottlingException(_))
382    }
383}
384impl ::std::error::Error for DeleteIAMPolicyAssignmentError {
385    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
386        match self {
387            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
388            Self::ConcurrentUpdatingException(_inner) => ::std::option::Option::Some(_inner),
389            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
390            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
391            Self::ResourceExistsException(_inner) => ::std::option::Option::Some(_inner),
392            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
393            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
394            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
395        }
396    }
397}
398impl ::std::fmt::Display for DeleteIAMPolicyAssignmentError {
399    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
400        match self {
401            Self::AccessDeniedException(_inner) => _inner.fmt(f),
402            Self::ConcurrentUpdatingException(_inner) => _inner.fmt(f),
403            Self::InternalFailureException(_inner) => _inner.fmt(f),
404            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
405            Self::ResourceExistsException(_inner) => _inner.fmt(f),
406            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
407            Self::ThrottlingException(_inner) => _inner.fmt(f),
408            Self::Unhandled(_inner) => {
409                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
410                    write!(f, "unhandled error ({code})")
411                } else {
412                    f.write_str("unhandled error")
413                }
414            }
415        }
416    }
417}
418impl ::aws_smithy_types::retry::ProvideErrorKind for DeleteIAMPolicyAssignmentError {
419    fn code(&self) -> ::std::option::Option<&str> {
420        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
421    }
422    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
423        ::std::option::Option::None
424    }
425}
426impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DeleteIAMPolicyAssignmentError {
427    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
428        match self {
429            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
430            Self::ConcurrentUpdatingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
431            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
432            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
433            Self::ResourceExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
434            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
435            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
436            Self::Unhandled(_inner) => &_inner.meta,
437        }
438    }
439}
440impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DeleteIAMPolicyAssignmentError {
441    fn create_unhandled_error(
442        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
443        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
444    ) -> Self {
445        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
446            source,
447            meta: meta.unwrap_or_default(),
448        })
449    }
450}
451impl ::aws_types::request_id::RequestId for crate::operation::delete_iam_policy_assignment::DeleteIAMPolicyAssignmentError {
452    fn request_id(&self) -> Option<&str> {
453        self.meta().request_id()
454    }
455}
456
457pub use crate::operation::delete_iam_policy_assignment::_delete_iam_policy_assignment_output::DeleteIamPolicyAssignmentOutput;
458
459pub use crate::operation::delete_iam_policy_assignment::_delete_iam_policy_assignment_input::DeleteIamPolicyAssignmentInput;
460
461mod _delete_iam_policy_assignment_input;
462
463mod _delete_iam_policy_assignment_output;
464
465/// Builders
466pub mod builders;