#[non_exhaustive]
#[derive(::std::fmt::Debug)]
pub enum Error {
    ExpiredTokenException(crate::types::error::ExpiredTokenException),
    IdpCommunicationErrorException(crate::types::error::IdpCommunicationErrorException),
    IdpRejectedClaimException(crate::types::error::IdpRejectedClaimException),
    InvalidAuthorizationMessageException(crate::types::error::InvalidAuthorizationMessageException),
    InvalidIdentityTokenException(crate::types::error::InvalidIdentityTokenException),
    MalformedPolicyDocumentException(crate::types::error::MalformedPolicyDocumentException),
    PackedPolicyTooLargeException(crate::types::error::PackedPolicyTooLargeException),
    RegionDisabledException(crate::types::error::RegionDisabledException),
    Unhandled(::aws_smithy_types::error::Unhandled),
}
impl ::std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Error::ExpiredTokenException(inner) => inner.fmt(f),
            Error::IdpCommunicationErrorException(inner) => inner.fmt(f),
            Error::IdpRejectedClaimException(inner) => inner.fmt(f),
            Error::InvalidAuthorizationMessageException(inner) => inner.fmt(f),
            Error::InvalidIdentityTokenException(inner) => inner.fmt(f),
            Error::MalformedPolicyDocumentException(inner) => inner.fmt(f),
            Error::PackedPolicyTooLargeException(inner) => inner.fmt(f),
            Error::RegionDisabledException(inner) => inner.fmt(f),
            Error::Unhandled(inner) => inner.fmt(f),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::assume_role::AssumeRoleError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::assume_role::AssumeRoleError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::assume_role::AssumeRoleError> for Error {
    fn from(err: crate::operation::assume_role::AssumeRoleError) -> Self {
        match err {
            crate::operation::assume_role::AssumeRoleError::ExpiredTokenException(inner) => Error::ExpiredTokenException(inner),
            crate::operation::assume_role::AssumeRoleError::MalformedPolicyDocumentException(inner) => Error::MalformedPolicyDocumentException(inner),
            crate::operation::assume_role::AssumeRoleError::PackedPolicyTooLargeException(inner) => Error::PackedPolicyTooLargeException(inner),
            crate::operation::assume_role::AssumeRoleError::RegionDisabledException(inner) => Error::RegionDisabledException(inner),
            crate::operation::assume_role::AssumeRoleError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError> for Error {
    fn from(err: crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError) -> Self {
        match err {
            crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError::ExpiredTokenException(inner) => Error::ExpiredTokenException(inner),
            crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError::IdpRejectedClaimException(inner) => {
                Error::IdpRejectedClaimException(inner)
            }
            crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError::InvalidIdentityTokenException(inner) => {
                Error::InvalidIdentityTokenException(inner)
            }
            crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError::MalformedPolicyDocumentException(inner) => {
                Error::MalformedPolicyDocumentException(inner)
            }
            crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError::PackedPolicyTooLargeException(inner) => {
                Error::PackedPolicyTooLargeException(inner)
            }
            crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError::RegionDisabledException(inner) => Error::RegionDisabledException(inner),
            crate::operation::assume_role_with_saml::AssumeRoleWithSAMLError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError> for Error {
    fn from(err: crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError) -> Self {
        match err {
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::ExpiredTokenException(inner) => {
                Error::ExpiredTokenException(inner)
            }
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::IdpCommunicationErrorException(inner) => {
                Error::IdpCommunicationErrorException(inner)
            }
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::IdpRejectedClaimException(inner) => {
                Error::IdpRejectedClaimException(inner)
            }
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::InvalidIdentityTokenException(inner) => {
                Error::InvalidIdentityTokenException(inner)
            }
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::MalformedPolicyDocumentException(inner) => {
                Error::MalformedPolicyDocumentException(inner)
            }
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::PackedPolicyTooLargeException(inner) => {
                Error::PackedPolicyTooLargeException(inner)
            }
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::RegionDisabledException(inner) => {
                Error::RegionDisabledException(inner)
            }
            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::decode_authorization_message::DecodeAuthorizationMessageError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::decode_authorization_message::DecodeAuthorizationMessageError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::decode_authorization_message::DecodeAuthorizationMessageError> for Error {
    fn from(err: crate::operation::decode_authorization_message::DecodeAuthorizationMessageError) -> Self {
        match err {
            crate::operation::decode_authorization_message::DecodeAuthorizationMessageError::InvalidAuthorizationMessageException(inner) => {
                Error::InvalidAuthorizationMessageException(inner)
            }
            crate::operation::decode_authorization_message::DecodeAuthorizationMessageError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::get_access_key_info::GetAccessKeyInfoError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::get_access_key_info::GetAccessKeyInfoError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::get_access_key_info::GetAccessKeyInfoError> for Error {
    fn from(err: crate::operation::get_access_key_info::GetAccessKeyInfoError) -> Self {
        match err {
            crate::operation::get_access_key_info::GetAccessKeyInfoError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::get_caller_identity::GetCallerIdentityError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::get_caller_identity::GetCallerIdentityError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::get_caller_identity::GetCallerIdentityError> for Error {
    fn from(err: crate::operation::get_caller_identity::GetCallerIdentityError) -> Self {
        match err {
            crate::operation::get_caller_identity::GetCallerIdentityError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::get_federation_token::GetFederationTokenError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::get_federation_token::GetFederationTokenError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::get_federation_token::GetFederationTokenError> for Error {
    fn from(err: crate::operation::get_federation_token::GetFederationTokenError) -> Self {
        match err {
            crate::operation::get_federation_token::GetFederationTokenError::MalformedPolicyDocumentException(inner) => {
                Error::MalformedPolicyDocumentException(inner)
            }
            crate::operation::get_federation_token::GetFederationTokenError::PackedPolicyTooLargeException(inner) => {
                Error::PackedPolicyTooLargeException(inner)
            }
            crate::operation::get_federation_token::GetFederationTokenError::RegionDisabledException(inner) => Error::RegionDisabledException(inner),
            crate::operation::get_federation_token::GetFederationTokenError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl<R> From<::aws_smithy_http::result::SdkError<crate::operation::get_session_token::GetSessionTokenError, R>> for Error
where
    R: Send + Sync + std::fmt::Debug + 'static,
{
    fn from(err: ::aws_smithy_http::result::SdkError<crate::operation::get_session_token::GetSessionTokenError, R>) -> Self {
        match err {
            ::aws_smithy_http::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
            _ => Error::Unhandled(
                ::aws_smithy_types::error::Unhandled::builder()
                    .meta(::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone())
                    .source(err)
                    .build(),
            ),
        }
    }
}
impl From<crate::operation::get_session_token::GetSessionTokenError> for Error {
    fn from(err: crate::operation::get_session_token::GetSessionTokenError) -> Self {
        match err {
            crate::operation::get_session_token::GetSessionTokenError::RegionDisabledException(inner) => Error::RegionDisabledException(inner),
            crate::operation::get_session_token::GetSessionTokenError::Unhandled(inner) => Error::Unhandled(inner),
        }
    }
}
impl ::std::error::Error for Error {
    fn source(&self) -> std::option::Option<&(dyn ::std::error::Error + 'static)> {
        match self {
            Error::ExpiredTokenException(inner) => inner.source(),
            Error::IdpCommunicationErrorException(inner) => inner.source(),
            Error::IdpRejectedClaimException(inner) => inner.source(),
            Error::InvalidAuthorizationMessageException(inner) => inner.source(),
            Error::InvalidIdentityTokenException(inner) => inner.source(),
            Error::MalformedPolicyDocumentException(inner) => inner.source(),
            Error::PackedPolicyTooLargeException(inner) => inner.source(),
            Error::RegionDisabledException(inner) => inner.source(),
            Error::Unhandled(inner) => inner.source(),
        }
    }
}
impl ::aws_http::request_id::RequestId for Error {
    fn request_id(&self) -> Option<&str> {
        match self {
            Self::ExpiredTokenException(e) => e.request_id(),
            Self::IdpCommunicationErrorException(e) => e.request_id(),
            Self::IdpRejectedClaimException(e) => e.request_id(),
            Self::InvalidAuthorizationMessageException(e) => e.request_id(),
            Self::InvalidIdentityTokenException(e) => e.request_id(),
            Self::MalformedPolicyDocumentException(e) => e.request_id(),
            Self::PackedPolicyTooLargeException(e) => e.request_id(),
            Self::RegionDisabledException(e) => e.request_id(),
            Self::Unhandled(e) => e.request_id(),
        }
    }
}