Skip to main content

aws_sdk_ram/operation/
create_resource_share.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateResourceShare`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateResourceShare;
6impl CreateResourceShare {
7    /// Creates a new `CreateResourceShare`
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::create_resource_share::CreateResourceShareInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_resource_share::CreateResourceShareOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_resource_share::CreateResourceShareError,
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::create_resource_share::CreateResourceShareError>()
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::create_resource_share::CreateResourceShareOutput>()
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::create_resource_share::CreateResourceShareInput,
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", "CreateResourceShare", 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.CreateResourceShare",
59                "rpc.service" = "RAM",
60                "rpc.method" = "CreateResourceShare",
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 CreateResourceShare {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateResourceShare");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateResourceShareRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateResourceShareResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateResourceShare")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "CreateResourceShare",
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("CreateResourceShare")
129            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
130                CreateResourceShareTelemetryInputCaptureInterceptor,
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                CreateResourceShareEndpointParamsInterceptor,
137            ))
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
139                crate::operation::create_resource_share::CreateResourceShareError,
140            >::new())
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
142                crate::operation::create_resource_share::CreateResourceShareError,
143            >::new())
144            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
145                crate::operation::create_resource_share::CreateResourceShareError,
146            >::new());
147
148        ::std::borrow::Cow::Owned(rcb)
149    }
150}
151
152#[derive(Debug)]
153struct CreateResourceShareTelemetryInputCaptureInterceptor;
154
155#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
156impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateResourceShareTelemetryInputCaptureInterceptor {
157    fn name(&self) -> &'static str {
158        "CreateResourceShareTelemetryInputCaptureInterceptor"
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::<CreateResourceShareInput>() 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("name") {
186            if let ::std::option::Option::Some(value) = input.name.as_deref() {
187                captured.insert("name", 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 CreateResourceShareResponseDeserializer;
202impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateResourceShareResponseDeserializer {
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_create_resource_share::de_create_resource_share_http_error(status, headers, body)
216        } else {
217            crate::protocol_serde::shape_create_resource_share::de_create_resource_share_http_response(status, headers, body)
218        };
219        crate::protocol_serde::type_erase_result(parse_result)
220    }
221}
222#[derive(Debug)]
223struct CreateResourceShareRequestSerializer;
224impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateResourceShareRequestSerializer {
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::create_resource_share::CreateResourceShareInput>()
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::create_resource_share::CreateResourceShareInput,
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, "/createresourceshare").expect("formatting should succeed");
246                ::std::result::Result::Ok(())
247            }
248            #[allow(clippy::unnecessary_wraps)]
249            fn update_http_builder(
250                input: &crate::operation::create_resource_share::CreateResourceShareInput,
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(crate::protocol_serde::shape_create_resource_share::ser_create_resource_share_input(
262            &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 CreateResourceShareEndpointParamsInterceptor;
273
274#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
275impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateResourceShareEndpointParamsInterceptor {
276    fn name(&self) -> &'static str {
277        "CreateResourceShareEndpointParamsInterceptor"
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::<CreateResourceShareInput>()
293            .ok_or("failed to downcast to CreateResourceShareInput")?;
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 `CreateResourceShareError` operation.
314#[non_exhaustive]
315#[derive(::std::fmt::Debug)]
316pub enum CreateResourceShareError {
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 would exceed the limit for tags for your Amazon Web Services account.</p>
336    TagLimitExceededException(crate::types::error::TagLimitExceededException),
337    /// <p>The operation failed because the specified tag key is a reserved word and can't be used.</p>
338    TagPolicyViolationException(crate::types::error::TagPolicyViolationException),
339    /// <p>The operation failed because it exceeded the rate at which you are allowed to perform this operation. Please try again later.</p>
340    ThrottlingException(crate::types::error::ThrottlingException),
341    /// <p>The operation failed because a specified resource couldn't be found.</p>
342    UnknownResourceException(crate::types::error::UnknownResourceException),
343    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
344    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
345    variable wildcard pattern and check `.code()`:
346     \
347    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
348     \
349    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateResourceShareError) for what information is available for the error.")]
350    Unhandled(crate::error::sealed_unhandled::Unhandled),
351}
352impl CreateResourceShareError {
353    /// Creates the `CreateResourceShareError::Unhandled` variant from any error type.
354    pub fn unhandled(
355        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
356    ) -> Self {
357        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
358            source: err.into(),
359            meta: ::std::default::Default::default(),
360        })
361    }
362
363    /// Creates the `CreateResourceShareError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
364    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
365        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
366            source: err.clone().into(),
367            meta: err,
368        })
369    }
370    ///
371    /// Returns error metadata, which includes the error code, message,
372    /// request ID, and potentially additional information.
373    ///
374    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
375        match self {
376            Self::IdempotentParameterMismatchException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
377            Self::InvalidClientTokenException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
378            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
379            Self::InvalidStateTransitionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
380            Self::MalformedArnException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
381            Self::OperationNotPermittedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
382            Self::ResourceShareLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
383            Self::ServerInternalException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
384            Self::ServiceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
385            Self::TagLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
386            Self::TagPolicyViolationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
387            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
388            Self::UnknownResourceException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
389            Self::Unhandled(e) => &e.meta,
390        }
391    }
392    /// Returns `true` if the error kind is `CreateResourceShareError::IdempotentParameterMismatchException`.
393    pub fn is_idempotent_parameter_mismatch_exception(&self) -> bool {
394        matches!(self, Self::IdempotentParameterMismatchException(_))
395    }
396    /// Returns `true` if the error kind is `CreateResourceShareError::InvalidClientTokenException`.
397    pub fn is_invalid_client_token_exception(&self) -> bool {
398        matches!(self, Self::InvalidClientTokenException(_))
399    }
400    /// Returns `true` if the error kind is `CreateResourceShareError::InvalidParameterException`.
401    pub fn is_invalid_parameter_exception(&self) -> bool {
402        matches!(self, Self::InvalidParameterException(_))
403    }
404    /// Returns `true` if the error kind is `CreateResourceShareError::InvalidStateTransitionException`.
405    pub fn is_invalid_state_transition_exception(&self) -> bool {
406        matches!(self, Self::InvalidStateTransitionException(_))
407    }
408    /// Returns `true` if the error kind is `CreateResourceShareError::MalformedArnException`.
409    pub fn is_malformed_arn_exception(&self) -> bool {
410        matches!(self, Self::MalformedArnException(_))
411    }
412    /// Returns `true` if the error kind is `CreateResourceShareError::OperationNotPermittedException`.
413    pub fn is_operation_not_permitted_exception(&self) -> bool {
414        matches!(self, Self::OperationNotPermittedException(_))
415    }
416    /// Returns `true` if the error kind is `CreateResourceShareError::ResourceShareLimitExceededException`.
417    pub fn is_resource_share_limit_exceeded_exception(&self) -> bool {
418        matches!(self, Self::ResourceShareLimitExceededException(_))
419    }
420    /// Returns `true` if the error kind is `CreateResourceShareError::ServerInternalException`.
421    pub fn is_server_internal_exception(&self) -> bool {
422        matches!(self, Self::ServerInternalException(_))
423    }
424    /// Returns `true` if the error kind is `CreateResourceShareError::ServiceUnavailableException`.
425    pub fn is_service_unavailable_exception(&self) -> bool {
426        matches!(self, Self::ServiceUnavailableException(_))
427    }
428    /// Returns `true` if the error kind is `CreateResourceShareError::TagLimitExceededException`.
429    pub fn is_tag_limit_exceeded_exception(&self) -> bool {
430        matches!(self, Self::TagLimitExceededException(_))
431    }
432    /// Returns `true` if the error kind is `CreateResourceShareError::TagPolicyViolationException`.
433    pub fn is_tag_policy_violation_exception(&self) -> bool {
434        matches!(self, Self::TagPolicyViolationException(_))
435    }
436    /// Returns `true` if the error kind is `CreateResourceShareError::ThrottlingException`.
437    pub fn is_throttling_exception(&self) -> bool {
438        matches!(self, Self::ThrottlingException(_))
439    }
440    /// Returns `true` if the error kind is `CreateResourceShareError::UnknownResourceException`.
441    pub fn is_unknown_resource_exception(&self) -> bool {
442        matches!(self, Self::UnknownResourceException(_))
443    }
444}
445impl ::std::error::Error for CreateResourceShareError {
446    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
447        match self {
448            Self::IdempotentParameterMismatchException(_inner) => ::std::option::Option::Some(_inner),
449            Self::InvalidClientTokenException(_inner) => ::std::option::Option::Some(_inner),
450            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
451            Self::InvalidStateTransitionException(_inner) => ::std::option::Option::Some(_inner),
452            Self::MalformedArnException(_inner) => ::std::option::Option::Some(_inner),
453            Self::OperationNotPermittedException(_inner) => ::std::option::Option::Some(_inner),
454            Self::ResourceShareLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
455            Self::ServerInternalException(_inner) => ::std::option::Option::Some(_inner),
456            Self::ServiceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
457            Self::TagLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
458            Self::TagPolicyViolationException(_inner) => ::std::option::Option::Some(_inner),
459            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
460            Self::UnknownResourceException(_inner) => ::std::option::Option::Some(_inner),
461            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
462        }
463    }
464}
465impl ::std::fmt::Display for CreateResourceShareError {
466    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
467        match self {
468            Self::IdempotentParameterMismatchException(_inner) => _inner.fmt(f),
469            Self::InvalidClientTokenException(_inner) => _inner.fmt(f),
470            Self::InvalidParameterException(_inner) => _inner.fmt(f),
471            Self::InvalidStateTransitionException(_inner) => _inner.fmt(f),
472            Self::MalformedArnException(_inner) => _inner.fmt(f),
473            Self::OperationNotPermittedException(_inner) => _inner.fmt(f),
474            Self::ResourceShareLimitExceededException(_inner) => _inner.fmt(f),
475            Self::ServerInternalException(_inner) => _inner.fmt(f),
476            Self::ServiceUnavailableException(_inner) => _inner.fmt(f),
477            Self::TagLimitExceededException(_inner) => _inner.fmt(f),
478            Self::TagPolicyViolationException(_inner) => _inner.fmt(f),
479            Self::ThrottlingException(_inner) => _inner.fmt(f),
480            Self::UnknownResourceException(_inner) => _inner.fmt(f),
481            Self::Unhandled(_inner) => {
482                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
483                    write!(f, "unhandled error ({code})")
484                } else {
485                    f.write_str("unhandled error")
486                }
487            }
488        }
489    }
490}
491impl ::aws_smithy_types::retry::ProvideErrorKind for CreateResourceShareError {
492    fn code(&self) -> ::std::option::Option<&str> {
493        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
494    }
495    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
496        ::std::option::Option::None
497    }
498}
499impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateResourceShareError {
500    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
501        match self {
502            Self::IdempotentParameterMismatchException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
503            Self::InvalidClientTokenException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
504            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
505            Self::InvalidStateTransitionException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
506            Self::MalformedArnException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
507            Self::OperationNotPermittedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
508            Self::ResourceShareLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
509            Self::ServerInternalException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
510            Self::ServiceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
511            Self::TagLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
512            Self::TagPolicyViolationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
513            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
514            Self::UnknownResourceException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
515            Self::Unhandled(_inner) => &_inner.meta,
516        }
517    }
518}
519impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateResourceShareError {
520    fn create_unhandled_error(
521        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
522        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
523    ) -> Self {
524        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
525            source,
526            meta: meta.unwrap_or_default(),
527        })
528    }
529}
530impl ::aws_types::request_id::RequestId for crate::operation::create_resource_share::CreateResourceShareError {
531    fn request_id(&self) -> Option<&str> {
532        self.meta().request_id()
533    }
534}
535
536pub use crate::operation::create_resource_share::_create_resource_share_input::CreateResourceShareInput;
537
538pub use crate::operation::create_resource_share::_create_resource_share_output::CreateResourceShareOutput;
539
540mod _create_resource_share_input;
541
542mod _create_resource_share_output;
543
544/// Builders
545pub mod builders;