Skip to main content

aws_sdk_ram/operation/
associate_resource_share.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `AssociateResourceShare`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct AssociateResourceShare;
6impl AssociateResourceShare {
7    /// Creates a new `AssociateResourceShare`
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::associate_resource_share::AssociateResourceShareInput,
14    ) -> ::std::result::Result<
15        crate::operation::associate_resource_share::AssociateResourceShareOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::associate_resource_share::AssociateResourceShareError,
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::associate_resource_share::AssociateResourceShareError>()
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::associate_resource_share::AssociateResourceShareOutput>()
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::associate_resource_share::AssociateResourceShareInput,
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("RAM", "AssociateResourceShare", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "RAM.AssociateResourceShare",
59                "rpc.service" = "RAM",
60                "rpc.method" = "AssociateResourceShare",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73
74        if let ::std::option::Option::Some(config_override) = config_override {
75            for plugin in config_override.runtime_plugins.iter().cloned() {
76                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
77            }
78            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
79                config_override,
80                client_config.config.clone(),
81                &client_config.runtime_components,
82            ));
83        }
84        runtime_plugins
85    }
86}
87impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for AssociateResourceShare {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("AssociateResourceShare");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            AssociateResourceShareRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            AssociateResourceShareResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("AssociateResourceShare")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "AssociateResourceShare",
107            "RAM",
108        ));
109        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
110        signing_options.double_uri_encode = true;
111        signing_options.content_sha256_header = false;
112        signing_options.normalize_uri_path = true;
113        signing_options.payload_override = None;
114
115        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
116            signing_options,
117            ..::std::default::Default::default()
118        });
119
120        ::std::option::Option::Some(cfg.freeze())
121    }
122
123    fn runtime_components(
124        &self,
125        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
126    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
127        #[allow(unused_mut)]
128        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("AssociateResourceShare")
129            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
130                AssociateResourceShareTelemetryInputCaptureInterceptor,
131            ))
132            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
133                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
134            ))
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                AssociateResourceShareEndpointParamsInterceptor,
137            ))
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
139                crate::operation::associate_resource_share::AssociateResourceShareError,
140            >::new())
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
142                crate::operation::associate_resource_share::AssociateResourceShareError,
143            >::new())
144            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
145                crate::operation::associate_resource_share::AssociateResourceShareError,
146            >::new());
147
148        ::std::borrow::Cow::Owned(rcb)
149    }
150}
151
152#[derive(Debug)]
153struct AssociateResourceShareTelemetryInputCaptureInterceptor;
154
155#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
156impl ::aws_smithy_runtime_api::client::interceptors::Intercept for AssociateResourceShareTelemetryInputCaptureInterceptor {
157    fn name(&self) -> &'static str {
158        "AssociateResourceShareTelemetryInputCaptureInterceptor"
159    }
160
161    fn read_before_execution(
162        &self,
163        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
164            '_,
165            ::aws_smithy_runtime_api::client::interceptors::context::Input,
166            ::aws_smithy_runtime_api::client::interceptors::context::Output,
167            ::aws_smithy_runtime_api::client::interceptors::context::Error,
168        >,
169        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
170    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
171        // Nothing to do unless the customer opted in by naming members to record.
172        let ::std::option::Option::Some(requested) = cfg
173            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
174            .filter(|r| !r.is_empty())
175        else {
176            return ::std::result::Result::Ok(());
177        };
178
179        let ::std::option::Option::Some(input) = context.input().downcast_ref::<AssociateResourceShareInput>() else {
180            // A mismatched input is not this interceptor's concern; skip quietly.
181            return ::std::result::Result::Ok(());
182        };
183
184        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
185        if requested.should_capture("resourceShareArn") {
186            if let ::std::option::Option::Some(value) = input.resource_share_arn.as_deref() {
187                captured.insert("resourceShareArn", value);
188            }
189        }
190        if requested.should_capture("clientToken") {
191            if let ::std::option::Option::Some(value) = input.client_token.as_deref() {
192                captured.insert("clientToken", value);
193            }
194        }
195
196        cfg.interceptor_state().store_put(captured);
197        ::std::result::Result::Ok(())
198    }
199}
200#[derive(Debug)]
201struct AssociateResourceShareResponseDeserializer;
202impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for AssociateResourceShareResponseDeserializer {
203    fn deserialize_nonstreaming_with_config(
204        &self,
205        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
206        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
207    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
208        let (success, status) = (response.status().is_success(), response.status().as_u16());
209        let headers = response.headers();
210        let body = response.body().bytes().expect("body loaded");
211        #[allow(unused_mut)]
212        let mut force_error = false;
213        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
214        let parse_result = if !success && status != 200 || force_error {
215            crate::protocol_serde::shape_associate_resource_share::de_associate_resource_share_http_error(status, headers, body)
216        } else {
217            crate::protocol_serde::shape_associate_resource_share::de_associate_resource_share_http_response(status, headers, body)
218        };
219        crate::protocol_serde::type_erase_result(parse_result)
220    }
221}
222#[derive(Debug)]
223struct AssociateResourceShareRequestSerializer;
224impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for AssociateResourceShareRequestSerializer {
225    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
226    fn serialize_input(
227        &self,
228        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
229        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
230    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
231        let input = input
232            .downcast::<crate::operation::associate_resource_share::AssociateResourceShareInput>()
233            .expect("correct type");
234        let _header_serialization_settings = _cfg
235            .load::<crate::serialization_settings::HeaderSerializationSettings>()
236            .cloned()
237            .unwrap_or_default();
238        let mut request_builder = {
239            #[allow(clippy::uninlined_format_args)]
240            fn uri_base(
241                _input: &crate::operation::associate_resource_share::AssociateResourceShareInput,
242                output: &mut ::std::string::String,
243            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
244                use ::std::fmt::Write as _;
245                ::std::write!(output, "/associateresourceshare").expect("formatting should succeed");
246                ::std::result::Result::Ok(())
247            }
248            #[allow(clippy::unnecessary_wraps)]
249            fn update_http_builder(
250                input: &crate::operation::associate_resource_share::AssociateResourceShareInput,
251                builder: ::http_1x::request::Builder,
252            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
253                let mut uri = ::std::string::String::new();
254                uri_base(input, &mut uri)?;
255                ::std::result::Result::Ok(builder.method("POST").uri(uri))
256            }
257            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
258            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
259            builder
260        };
261        let body = ::aws_smithy_types::body::SdkBody::from(
262            crate::protocol_serde::shape_associate_resource_share::ser_associate_resource_share_input(&input)?,
263        );
264        if let Some(content_length) = body.content_length() {
265            let content_length = content_length.to_string();
266            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
267        }
268        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
269    }
270}
271#[derive(Debug)]
272struct AssociateResourceShareEndpointParamsInterceptor;
273
274#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
275impl ::aws_smithy_runtime_api::client::interceptors::Intercept for AssociateResourceShareEndpointParamsInterceptor {
276    fn name(&self) -> &'static str {
277        "AssociateResourceShareEndpointParamsInterceptor"
278    }
279
280    fn read_before_execution(
281        &self,
282        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
283            '_,
284            ::aws_smithy_runtime_api::client::interceptors::context::Input,
285            ::aws_smithy_runtime_api::client::interceptors::context::Output,
286            ::aws_smithy_runtime_api::client::interceptors::context::Error,
287        >,
288        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
289    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
290        let _input = context
291            .input()
292            .downcast_ref::<AssociateResourceShareInput>()
293            .ok_or("failed to downcast to AssociateResourceShareInput")?;
294
295        let params = crate::config::endpoint::Params::builder()
296            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
297            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
298            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
299            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
300            .build()
301            .map_err(|err| {
302                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
303            })?;
304        cfg.interceptor_state()
305            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
306        ::std::result::Result::Ok(())
307    }
308}
309
310// The get_* functions below are generated from JMESPath expressions in the
311// operationContextParams trait. They target the operation's input shape.
312
313/// Error type for the `AssociateResourceShareError` operation.
314#[non_exhaustive]
315#[derive(::std::fmt::Debug)]
316pub enum AssociateResourceShareError {
317    /// <p>The operation failed because the client token input parameter matched one that was used with a previous call to the operation, but at least one of the other input parameters is different from the previous call.</p>
318    IdempotentParameterMismatchException(crate::types::error::IdempotentParameterMismatchException),
319    /// <p>The operation failed because the specified client token isn't valid.</p>
320    InvalidClientTokenException(crate::types::error::InvalidClientTokenException),
321    /// <p>The operation failed because a parameter you specified isn't valid.</p>
322    InvalidParameterException(crate::types::error::InvalidParameterException),
323    /// <p>The operation failed because the requested operation isn't valid for the resource share in its current state.</p>
324    InvalidStateTransitionException(crate::types::error::InvalidStateTransitionException),
325    /// <p>The operation failed because the specified <a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon Resource Name (ARN)</a> has a format that isn't valid.</p>
326    MalformedArnException(crate::types::error::MalformedArnException),
327    /// <p>The operation failed because the requested operation isn't permitted.</p>
328    OperationNotPermittedException(crate::types::error::OperationNotPermittedException),
329    /// <p>The operation failed because it would exceed the limit for resource shares for your account. You can associate up to 100 resources per call. To view the limits for your Amazon Web Services account, see the <a href="https://console.aws.amazon.com/servicequotas/home/services/ram/quotas">RAM page in the Service Quotas console</a>.</p>
330    ResourceShareLimitExceededException(crate::types::error::ResourceShareLimitExceededException),
331    /// <p>The operation failed because the service could not respond to the request due to an internal problem. Try again later.</p>
332    ServerInternalException(crate::types::error::ServerInternalException),
333    /// <p>The operation failed because the service isn't available. Try again later.</p>
334    ServiceUnavailableException(crate::types::error::ServiceUnavailableException),
335    /// <p>The operation failed because it exceeded the rate at which you are allowed to perform this operation. Please try again later.</p>
336    ThrottlingException(crate::types::error::ThrottlingException),
337    /// <p>The operation failed because a specified resource couldn't be found.</p>
338    UnknownResourceException(crate::types::error::UnknownResourceException),
339    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
340    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
341    variable wildcard pattern and check `.code()`:
342     \
343    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
344     \
345    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-AssociateResourceShareError) for what information is available for the error.")]
346    Unhandled(crate::error::sealed_unhandled::Unhandled),
347}
348impl AssociateResourceShareError {
349    /// Creates the `AssociateResourceShareError::Unhandled` variant from any error type.
350    pub fn unhandled(
351        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
352    ) -> Self {
353        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
354            source: err.into(),
355            meta: ::std::default::Default::default(),
356        })
357    }
358
359    /// Creates the `AssociateResourceShareError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
360    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
361        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
362            source: err.clone().into(),
363            meta: err,
364        })
365    }
366    ///
367    /// Returns error metadata, which includes the error code, message,
368    /// request ID, and potentially additional information.
369    ///
370    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
371        match self {
372            Self::IdempotentParameterMismatchException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
373            Self::InvalidClientTokenException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
374            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
375            Self::InvalidStateTransitionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
376            Self::MalformedArnException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
377            Self::OperationNotPermittedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
378            Self::ResourceShareLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
379            Self::ServerInternalException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
380            Self::ServiceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
381            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
382            Self::UnknownResourceException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
383            Self::Unhandled(e) => &e.meta,
384        }
385    }
386    /// Returns `true` if the error kind is `AssociateResourceShareError::IdempotentParameterMismatchException`.
387    pub fn is_idempotent_parameter_mismatch_exception(&self) -> bool {
388        matches!(self, Self::IdempotentParameterMismatchException(_))
389    }
390    /// Returns `true` if the error kind is `AssociateResourceShareError::InvalidClientTokenException`.
391    pub fn is_invalid_client_token_exception(&self) -> bool {
392        matches!(self, Self::InvalidClientTokenException(_))
393    }
394    /// Returns `true` if the error kind is `AssociateResourceShareError::InvalidParameterException`.
395    pub fn is_invalid_parameter_exception(&self) -> bool {
396        matches!(self, Self::InvalidParameterException(_))
397    }
398    /// Returns `true` if the error kind is `AssociateResourceShareError::InvalidStateTransitionException`.
399    pub fn is_invalid_state_transition_exception(&self) -> bool {
400        matches!(self, Self::InvalidStateTransitionException(_))
401    }
402    /// Returns `true` if the error kind is `AssociateResourceShareError::MalformedArnException`.
403    pub fn is_malformed_arn_exception(&self) -> bool {
404        matches!(self, Self::MalformedArnException(_))
405    }
406    /// Returns `true` if the error kind is `AssociateResourceShareError::OperationNotPermittedException`.
407    pub fn is_operation_not_permitted_exception(&self) -> bool {
408        matches!(self, Self::OperationNotPermittedException(_))
409    }
410    /// Returns `true` if the error kind is `AssociateResourceShareError::ResourceShareLimitExceededException`.
411    pub fn is_resource_share_limit_exceeded_exception(&self) -> bool {
412        matches!(self, Self::ResourceShareLimitExceededException(_))
413    }
414    /// Returns `true` if the error kind is `AssociateResourceShareError::ServerInternalException`.
415    pub fn is_server_internal_exception(&self) -> bool {
416        matches!(self, Self::ServerInternalException(_))
417    }
418    /// Returns `true` if the error kind is `AssociateResourceShareError::ServiceUnavailableException`.
419    pub fn is_service_unavailable_exception(&self) -> bool {
420        matches!(self, Self::ServiceUnavailableException(_))
421    }
422    /// Returns `true` if the error kind is `AssociateResourceShareError::ThrottlingException`.
423    pub fn is_throttling_exception(&self) -> bool {
424        matches!(self, Self::ThrottlingException(_))
425    }
426    /// Returns `true` if the error kind is `AssociateResourceShareError::UnknownResourceException`.
427    pub fn is_unknown_resource_exception(&self) -> bool {
428        matches!(self, Self::UnknownResourceException(_))
429    }
430}
431impl ::std::error::Error for AssociateResourceShareError {
432    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
433        match self {
434            Self::IdempotentParameterMismatchException(_inner) => ::std::option::Option::Some(_inner),
435            Self::InvalidClientTokenException(_inner) => ::std::option::Option::Some(_inner),
436            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
437            Self::InvalidStateTransitionException(_inner) => ::std::option::Option::Some(_inner),
438            Self::MalformedArnException(_inner) => ::std::option::Option::Some(_inner),
439            Self::OperationNotPermittedException(_inner) => ::std::option::Option::Some(_inner),
440            Self::ResourceShareLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
441            Self::ServerInternalException(_inner) => ::std::option::Option::Some(_inner),
442            Self::ServiceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
443            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
444            Self::UnknownResourceException(_inner) => ::std::option::Option::Some(_inner),
445            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
446        }
447    }
448}
449impl ::std::fmt::Display for AssociateResourceShareError {
450    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
451        match self {
452            Self::IdempotentParameterMismatchException(_inner) => _inner.fmt(f),
453            Self::InvalidClientTokenException(_inner) => _inner.fmt(f),
454            Self::InvalidParameterException(_inner) => _inner.fmt(f),
455            Self::InvalidStateTransitionException(_inner) => _inner.fmt(f),
456            Self::MalformedArnException(_inner) => _inner.fmt(f),
457            Self::OperationNotPermittedException(_inner) => _inner.fmt(f),
458            Self::ResourceShareLimitExceededException(_inner) => _inner.fmt(f),
459            Self::ServerInternalException(_inner) => _inner.fmt(f),
460            Self::ServiceUnavailableException(_inner) => _inner.fmt(f),
461            Self::ThrottlingException(_inner) => _inner.fmt(f),
462            Self::UnknownResourceException(_inner) => _inner.fmt(f),
463            Self::Unhandled(_inner) => {
464                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
465                    write!(f, "unhandled error ({code})")
466                } else {
467                    f.write_str("unhandled error")
468                }
469            }
470        }
471    }
472}
473impl ::aws_smithy_types::retry::ProvideErrorKind for AssociateResourceShareError {
474    fn code(&self) -> ::std::option::Option<&str> {
475        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
476    }
477    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
478        ::std::option::Option::None
479    }
480}
481impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for AssociateResourceShareError {
482    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
483        match self {
484            Self::IdempotentParameterMismatchException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
485            Self::InvalidClientTokenException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
486            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
487            Self::InvalidStateTransitionException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
488            Self::MalformedArnException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
489            Self::OperationNotPermittedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
490            Self::ResourceShareLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
491            Self::ServerInternalException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
492            Self::ServiceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
493            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
494            Self::UnknownResourceException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
495            Self::Unhandled(_inner) => &_inner.meta,
496        }
497    }
498}
499impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for AssociateResourceShareError {
500    fn create_unhandled_error(
501        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
502        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
503    ) -> Self {
504        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
505            source,
506            meta: meta.unwrap_or_default(),
507        })
508    }
509}
510impl ::aws_types::request_id::RequestId for crate::operation::associate_resource_share::AssociateResourceShareError {
511    fn request_id(&self) -> Option<&str> {
512        self.meta().request_id()
513    }
514}
515
516pub use crate::operation::associate_resource_share::_associate_resource_share_input::AssociateResourceShareInput;
517
518pub use crate::operation::associate_resource_share::_associate_resource_share_output::AssociateResourceShareOutput;
519
520mod _associate_resource_share_input;
521
522mod _associate_resource_share_output;
523
524/// Builders
525pub mod builders;