aws_sdk_quicksight/operation/
list_role_memberships.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `ListRoleMemberships`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct ListRoleMemberships;
6impl ListRoleMemberships {
7    /// Creates a new `ListRoleMemberships`
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::list_role_memberships::ListRoleMembershipsInput,
14    ) -> ::std::result::Result<
15        crate::operation::list_role_memberships::ListRoleMembershipsOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::list_role_memberships::ListRoleMembershipsError,
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::list_role_memberships::ListRoleMembershipsError>()
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::list_role_memberships::ListRoleMembershipsOutput>()
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::list_role_memberships::ListRoleMembershipsInput,
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("QuickSight", "ListRoleMemberships", 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                "QuickSight.ListRoleMemberships",
59                "rpc.service" = "QuickSight",
60                "rpc.method" = "ListRoleMemberships",
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        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
74            ::aws_runtime::auth::sigv4::SCHEME_ID,
75        ]));
76        if let ::std::option::Option::Some(config_override) = config_override {
77            for plugin in config_override.runtime_plugins.iter().cloned() {
78                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
79            }
80            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
81                config_override,
82                client_config.config.clone(),
83                &client_config.runtime_components,
84            ));
85        }
86        runtime_plugins
87    }
88}
89impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ListRoleMemberships {
90    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
91        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ListRoleMemberships");
92
93        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
94            ListRoleMembershipsRequestSerializer,
95        ));
96        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
97            ListRoleMembershipsResponseDeserializer,
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
101            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
105            "ListRoleMemberships",
106            "QuickSight",
107        ));
108        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
109        signing_options.double_uri_encode = true;
110        signing_options.content_sha256_header = false;
111        signing_options.normalize_uri_path = true;
112        signing_options.payload_override = None;
113
114        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
115            signing_options,
116            ..::std::default::Default::default()
117        });
118
119        ::std::option::Option::Some(cfg.freeze())
120    }
121
122    fn runtime_components(
123        &self,
124        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
125    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
126        #[allow(unused_mut)]
127        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ListRoleMemberships")
128            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
129            .with_interceptor(ListRoleMembershipsEndpointParamsInterceptor)
130            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
131                crate::operation::list_role_memberships::ListRoleMembershipsError,
132            >::new())
133            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
134                crate::operation::list_role_memberships::ListRoleMembershipsError,
135            >::new())
136            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
137                crate::operation::list_role_memberships::ListRoleMembershipsError,
138            >::new());
139
140        ::std::borrow::Cow::Owned(rcb)
141    }
142}
143
144#[derive(Debug)]
145struct ListRoleMembershipsResponseDeserializer;
146impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListRoleMembershipsResponseDeserializer {
147    fn deserialize_nonstreaming(
148        &self,
149        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
150    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
151        let (success, status) = (response.status().is_success(), response.status().as_u16());
152        let headers = response.headers();
153        let body = response.body().bytes().expect("body loaded");
154        #[allow(unused_mut)]
155        let mut force_error = false;
156        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
157        let parse_result = if !success && status != 200 || force_error {
158            crate::protocol_serde::shape_list_role_memberships::de_list_role_memberships_http_error(status, headers, body)
159        } else {
160            crate::protocol_serde::shape_list_role_memberships::de_list_role_memberships_http_response(status, headers, body)
161        };
162        crate::protocol_serde::type_erase_result(parse_result)
163    }
164}
165#[derive(Debug)]
166struct ListRoleMembershipsRequestSerializer;
167impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ListRoleMembershipsRequestSerializer {
168    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
169    fn serialize_input(
170        &self,
171        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
172        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
173    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
174        let input = input
175            .downcast::<crate::operation::list_role_memberships::ListRoleMembershipsInput>()
176            .expect("correct type");
177        let _header_serialization_settings = _cfg
178            .load::<crate::serialization_settings::HeaderSerializationSettings>()
179            .cloned()
180            .unwrap_or_default();
181        let mut request_builder = {
182            fn uri_base(
183                _input: &crate::operation::list_role_memberships::ListRoleMembershipsInput,
184                output: &mut ::std::string::String,
185            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
186                use ::std::fmt::Write as _;
187                let input_1 = &_input.aws_account_id;
188                let input_1 = input_1
189                    .as_ref()
190                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("aws_account_id", "cannot be empty or unset"))?;
191                let aws_account_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
192                if aws_account_id.is_empty() {
193                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
194                        "aws_account_id",
195                        "cannot be empty or unset",
196                    ));
197                }
198                let input_2 = &_input.namespace;
199                let input_2 = input_2
200                    .as_ref()
201                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("namespace", "cannot be empty or unset"))?;
202                let namespace = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
203                if namespace.is_empty() {
204                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
205                        "namespace",
206                        "cannot be empty or unset",
207                    ));
208                }
209                let input_3 = &_input.role;
210                let input_3 = input_3
211                    .as_ref()
212                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("role", "cannot be empty or unset"))?;
213                let role = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
214                if role.is_empty() {
215                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
216                        "role",
217                        "cannot be empty or unset",
218                    ));
219                }
220                ::std::write!(
221                    output,
222                    "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/members",
223                    AwsAccountId = aws_account_id,
224                    Namespace = namespace,
225                    Role = role
226                )
227                .expect("formatting should succeed");
228                ::std::result::Result::Ok(())
229            }
230            fn uri_query(
231                _input: &crate::operation::list_role_memberships::ListRoleMembershipsInput,
232                mut output: &mut ::std::string::String,
233            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
234                let mut query = ::aws_smithy_http::query::Writer::new(output);
235                if let ::std::option::Option::Some(inner_4) = &_input.next_token {
236                    {
237                        query.push_kv("next-token", &::aws_smithy_http::query::fmt_string(inner_4));
238                    }
239                }
240                if let ::std::option::Option::Some(inner_5) = &_input.max_results {
241                    {
242                        query.push_kv("max-results", ::aws_smithy_types::primitive::Encoder::from(*inner_5).encode());
243                    }
244                }
245                ::std::result::Result::Ok(())
246            }
247            #[allow(clippy::unnecessary_wraps)]
248            fn update_http_builder(
249                input: &crate::operation::list_role_memberships::ListRoleMembershipsInput,
250                builder: ::http::request::Builder,
251            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
252                let mut uri = ::std::string::String::new();
253                uri_base(input, &mut uri)?;
254                uri_query(input, &mut uri)?;
255                ::std::result::Result::Ok(builder.method("GET").uri(uri))
256            }
257            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
258            builder
259        };
260        let body = ::aws_smithy_types::body::SdkBody::from("");
261
262        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
263    }
264}
265#[derive(Debug)]
266struct ListRoleMembershipsEndpointParamsInterceptor;
267
268impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ListRoleMembershipsEndpointParamsInterceptor {
269    fn name(&self) -> &'static str {
270        "ListRoleMembershipsEndpointParamsInterceptor"
271    }
272
273    fn read_before_execution(
274        &self,
275        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
276            '_,
277            ::aws_smithy_runtime_api::client::interceptors::context::Input,
278            ::aws_smithy_runtime_api::client::interceptors::context::Output,
279            ::aws_smithy_runtime_api::client::interceptors::context::Error,
280        >,
281        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
282    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
283        let _input = context
284            .input()
285            .downcast_ref::<ListRoleMembershipsInput>()
286            .ok_or("failed to downcast to ListRoleMembershipsInput")?;
287
288        let params = crate::config::endpoint::Params::builder()
289            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
290            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
291            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
292            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
293            .build()
294            .map_err(|err| {
295                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
296            })?;
297        cfg.interceptor_state()
298            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
299        ::std::result::Result::Ok(())
300    }
301}
302
303// The get_* functions below are generated from JMESPath expressions in the
304// operationContextParams trait. They target the operation's input shape.
305
306/// Error type for the `ListRoleMembershipsError` operation.
307#[non_exhaustive]
308#[derive(::std::fmt::Debug)]
309pub enum ListRoleMembershipsError {
310    /// <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>
311    AccessDeniedException(crate::types::error::AccessDeniedException),
312    /// <p>An internal failure occurred.</p>
313    InternalFailureException(crate::types::error::InternalFailureException),
314    /// <p>The <code>NextToken</code> value isn't valid.</p>
315    InvalidNextTokenException(crate::types::error::InvalidNextTokenException),
316    /// <p>One or more parameters has a value that isn't valid.</p>
317    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
318    /// <p>A limit is exceeded.</p>
319    LimitExceededException(crate::types::error::LimitExceededException),
320    /// <p>One or more preconditions aren't met.</p>
321    PreconditionNotMetException(crate::types::error::PreconditionNotMetException),
322    /// <p>One or more resources can't be found.</p>
323    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
324    /// <p>This resource is currently unavailable.</p>
325    ResourceUnavailableException(crate::types::error::ResourceUnavailableException),
326    /// <p>Access is throttled.</p>
327    ThrottlingException(crate::types::error::ThrottlingException),
328    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
329    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
330    variable wildcard pattern and check `.code()`:
331     \
332    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
333     \
334    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ListRoleMembershipsError) for what information is available for the error.")]
335    Unhandled(crate::error::sealed_unhandled::Unhandled),
336}
337impl ListRoleMembershipsError {
338    /// Creates the `ListRoleMembershipsError::Unhandled` variant from any error type.
339    pub fn unhandled(
340        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
341    ) -> Self {
342        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
343            source: err.into(),
344            meta: ::std::default::Default::default(),
345        })
346    }
347
348    /// Creates the `ListRoleMembershipsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
349    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
350        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
351            source: err.clone().into(),
352            meta: err,
353        })
354    }
355    ///
356    /// Returns error metadata, which includes the error code, message,
357    /// request ID, and potentially additional information.
358    ///
359    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
360        match self {
361            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
362            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
363            Self::InvalidNextTokenException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
364            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::LimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
366            Self::PreconditionNotMetException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
367            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
368            Self::ResourceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
369            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
370            Self::Unhandled(e) => &e.meta,
371        }
372    }
373    /// Returns `true` if the error kind is `ListRoleMembershipsError::AccessDeniedException`.
374    pub fn is_access_denied_exception(&self) -> bool {
375        matches!(self, Self::AccessDeniedException(_))
376    }
377    /// Returns `true` if the error kind is `ListRoleMembershipsError::InternalFailureException`.
378    pub fn is_internal_failure_exception(&self) -> bool {
379        matches!(self, Self::InternalFailureException(_))
380    }
381    /// Returns `true` if the error kind is `ListRoleMembershipsError::InvalidNextTokenException`.
382    pub fn is_invalid_next_token_exception(&self) -> bool {
383        matches!(self, Self::InvalidNextTokenException(_))
384    }
385    /// Returns `true` if the error kind is `ListRoleMembershipsError::InvalidParameterValueException`.
386    pub fn is_invalid_parameter_value_exception(&self) -> bool {
387        matches!(self, Self::InvalidParameterValueException(_))
388    }
389    /// Returns `true` if the error kind is `ListRoleMembershipsError::LimitExceededException`.
390    pub fn is_limit_exceeded_exception(&self) -> bool {
391        matches!(self, Self::LimitExceededException(_))
392    }
393    /// Returns `true` if the error kind is `ListRoleMembershipsError::PreconditionNotMetException`.
394    pub fn is_precondition_not_met_exception(&self) -> bool {
395        matches!(self, Self::PreconditionNotMetException(_))
396    }
397    /// Returns `true` if the error kind is `ListRoleMembershipsError::ResourceNotFoundException`.
398    pub fn is_resource_not_found_exception(&self) -> bool {
399        matches!(self, Self::ResourceNotFoundException(_))
400    }
401    /// Returns `true` if the error kind is `ListRoleMembershipsError::ResourceUnavailableException`.
402    pub fn is_resource_unavailable_exception(&self) -> bool {
403        matches!(self, Self::ResourceUnavailableException(_))
404    }
405    /// Returns `true` if the error kind is `ListRoleMembershipsError::ThrottlingException`.
406    pub fn is_throttling_exception(&self) -> bool {
407        matches!(self, Self::ThrottlingException(_))
408    }
409}
410impl ::std::error::Error for ListRoleMembershipsError {
411    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
412        match self {
413            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
414            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
415            Self::InvalidNextTokenException(_inner) => ::std::option::Option::Some(_inner),
416            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
417            Self::LimitExceededException(_inner) => ::std::option::Option::Some(_inner),
418            Self::PreconditionNotMetException(_inner) => ::std::option::Option::Some(_inner),
419            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
420            Self::ResourceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
421            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
422            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
423        }
424    }
425}
426impl ::std::fmt::Display for ListRoleMembershipsError {
427    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
428        match self {
429            Self::AccessDeniedException(_inner) => _inner.fmt(f),
430            Self::InternalFailureException(_inner) => _inner.fmt(f),
431            Self::InvalidNextTokenException(_inner) => _inner.fmt(f),
432            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
433            Self::LimitExceededException(_inner) => _inner.fmt(f),
434            Self::PreconditionNotMetException(_inner) => _inner.fmt(f),
435            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
436            Self::ResourceUnavailableException(_inner) => _inner.fmt(f),
437            Self::ThrottlingException(_inner) => _inner.fmt(f),
438            Self::Unhandled(_inner) => {
439                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
440                    write!(f, "unhandled error ({code})")
441                } else {
442                    f.write_str("unhandled error")
443                }
444            }
445        }
446    }
447}
448impl ::aws_smithy_types::retry::ProvideErrorKind for ListRoleMembershipsError {
449    fn code(&self) -> ::std::option::Option<&str> {
450        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
451    }
452    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
453        ::std::option::Option::None
454    }
455}
456impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ListRoleMembershipsError {
457    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
458        match self {
459            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
460            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
461            Self::InvalidNextTokenException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
462            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
463            Self::LimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
464            Self::PreconditionNotMetException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
465            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
466            Self::ResourceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
467            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
468            Self::Unhandled(_inner) => &_inner.meta,
469        }
470    }
471}
472impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ListRoleMembershipsError {
473    fn create_unhandled_error(
474        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
475        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
476    ) -> Self {
477        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
478            source,
479            meta: meta.unwrap_or_default(),
480        })
481    }
482}
483impl ::aws_types::request_id::RequestId for crate::operation::list_role_memberships::ListRoleMembershipsError {
484    fn request_id(&self) -> Option<&str> {
485        self.meta().request_id()
486    }
487}
488
489pub use crate::operation::list_role_memberships::_list_role_memberships_output::ListRoleMembershipsOutput;
490
491pub use crate::operation::list_role_memberships::_list_role_memberships_input::ListRoleMembershipsInput;
492
493mod _list_role_memberships_input;
494
495mod _list_role_memberships_output;
496
497/// Builders
498pub mod builders;
499
500/// Paginator for this operation
501pub mod paginator;