Skip to main content

aws_sdk_codecatalyst/operation/
update_dev_environment.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `UpdateDevEnvironment`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct UpdateDevEnvironment;
6impl UpdateDevEnvironment {
7    /// Creates a new `UpdateDevEnvironment`
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::update_dev_environment::UpdateDevEnvironmentInput,
14    ) -> ::std::result::Result<
15        crate::operation::update_dev_environment::UpdateDevEnvironmentOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::update_dev_environment::UpdateDevEnvironmentError,
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::update_dev_environment::UpdateDevEnvironmentError>()
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::update_dev_environment::UpdateDevEnvironmentOutput>()
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::update_dev_environment::UpdateDevEnvironmentInput,
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("CodeCatalyst", "UpdateDevEnvironment", 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                "CodeCatalyst.UpdateDevEnvironment",
59                "rpc.service" = "CodeCatalyst",
60                "rpc.method" = "UpdateDevEnvironment",
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 UpdateDevEnvironment {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("UpdateDevEnvironment");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            UpdateDevEnvironmentRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            UpdateDevEnvironmentResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("UpdateDevEnvironment")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "UpdateDevEnvironment",
107            "CodeCatalyst",
108        ));
109
110        ::std::option::Option::Some(cfg.freeze())
111    }
112
113    fn runtime_components(
114        &self,
115        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
116    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
117        #[allow(unused_mut)]
118        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("UpdateDevEnvironment")
119            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
120                UpdateDevEnvironmentTelemetryInputCaptureInterceptor,
121            ))
122            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
123                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
124            ))
125            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
126                UpdateDevEnvironmentEndpointParamsInterceptor,
127            ))
128            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
129                crate::operation::update_dev_environment::UpdateDevEnvironmentError,
130            >::new())
131            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
132                crate::operation::update_dev_environment::UpdateDevEnvironmentError,
133            >::new())
134            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
135                crate::operation::update_dev_environment::UpdateDevEnvironmentError,
136            >::new())
137            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
138                crate::operation::update_dev_environment::UpdateDevEnvironmentError,
139            >::new());
140
141        ::std::borrow::Cow::Owned(rcb)
142    }
143}
144
145#[derive(Debug)]
146struct UpdateDevEnvironmentTelemetryInputCaptureInterceptor;
147
148#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
149impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateDevEnvironmentTelemetryInputCaptureInterceptor {
150    fn name(&self) -> &'static str {
151        "UpdateDevEnvironmentTelemetryInputCaptureInterceptor"
152    }
153
154    fn read_before_execution(
155        &self,
156        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
157            '_,
158            ::aws_smithy_runtime_api::client::interceptors::context::Input,
159            ::aws_smithy_runtime_api::client::interceptors::context::Output,
160            ::aws_smithy_runtime_api::client::interceptors::context::Error,
161        >,
162        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
163    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
164        // Nothing to do unless the customer opted in by naming members to record.
165        let ::std::option::Option::Some(requested) = cfg
166            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
167            .filter(|r| !r.is_empty())
168        else {
169            return ::std::result::Result::Ok(());
170        };
171
172        let ::std::option::Option::Some(input) = context.input().downcast_ref::<UpdateDevEnvironmentInput>() else {
173            // A mismatched input is not this interceptor's concern; skip quietly.
174            return ::std::result::Result::Ok(());
175        };
176
177        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
178        if requested.should_capture("spaceName") {
179            if let ::std::option::Option::Some(value) = input.space_name.as_deref() {
180                captured.insert("spaceName", value);
181            }
182        }
183        if requested.should_capture("projectName") {
184            if let ::std::option::Option::Some(value) = input.project_name.as_deref() {
185                captured.insert("projectName", value);
186            }
187        }
188        if requested.should_capture("id") {
189            if let ::std::option::Option::Some(value) = input.id.as_deref() {
190                captured.insert("id", value);
191            }
192        }
193        if requested.should_capture("alias") {
194            if let ::std::option::Option::Some(value) = input.alias.as_deref() {
195                captured.insert("alias", value);
196            }
197        }
198        if requested.should_capture("clientToken") {
199            if let ::std::option::Option::Some(value) = input.client_token.as_deref() {
200                captured.insert("clientToken", value);
201            }
202        }
203
204        cfg.interceptor_state().store_put(captured);
205        ::std::result::Result::Ok(())
206    }
207}
208#[derive(Debug)]
209struct UpdateDevEnvironmentResponseDeserializer;
210impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for UpdateDevEnvironmentResponseDeserializer {
211    fn deserialize_nonstreaming_with_config(
212        &self,
213        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
214        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
215    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
216        let (success, status) = (response.status().is_success(), response.status().as_u16());
217        let headers = response.headers();
218        let body = response.body().bytes().expect("body loaded");
219        #[allow(unused_mut)]
220        let mut force_error = false;
221        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
222        let parse_result = if !success && status != 200 || force_error {
223            crate::protocol_serde::shape_update_dev_environment::de_update_dev_environment_http_error(status, headers, body)
224        } else {
225            crate::protocol_serde::shape_update_dev_environment::de_update_dev_environment_http_response(status, headers, body)
226        };
227        crate::protocol_serde::type_erase_result(parse_result)
228    }
229}
230#[derive(Debug)]
231struct UpdateDevEnvironmentRequestSerializer;
232impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for UpdateDevEnvironmentRequestSerializer {
233    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
234    fn serialize_input(
235        &self,
236        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
237        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
238    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
239        let input = input
240            .downcast::<crate::operation::update_dev_environment::UpdateDevEnvironmentInput>()
241            .expect("correct type");
242        let _header_serialization_settings = _cfg
243            .load::<crate::serialization_settings::HeaderSerializationSettings>()
244            .cloned()
245            .unwrap_or_default();
246        let mut request_builder = {
247            #[allow(clippy::uninlined_format_args)]
248            fn uri_base(
249                _input: &crate::operation::update_dev_environment::UpdateDevEnvironmentInput,
250                output: &mut ::std::string::String,
251            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
252                use ::std::fmt::Write as _;
253                let input_1 = &_input.space_name;
254                let input_1 = input_1
255                    .as_ref()
256                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
257                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
258                if space_name.is_empty() {
259                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
260                        "space_name",
261                        "cannot be empty or unset",
262                    ));
263                }
264                let input_2 = &_input.project_name;
265                let input_2 = input_2
266                    .as_ref()
267                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
268                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
269                if project_name.is_empty() {
270                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
271                        "project_name",
272                        "cannot be empty or unset",
273                    ));
274                }
275                let input_3 = &_input.id;
276                let input_3 = input_3
277                    .as_ref()
278                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("id", "cannot be empty or unset"))?;
279                let id = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
280                if id.is_empty() {
281                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
282                        "id",
283                        "cannot be empty or unset",
284                    ));
285                }
286                ::std::write!(
287                    output,
288                    "/v1/spaces/{spaceName}/projects/{projectName}/devEnvironments/{id}",
289                    spaceName = space_name,
290                    projectName = project_name,
291                    id = id
292                )
293                .expect("formatting should succeed");
294                ::std::result::Result::Ok(())
295            }
296            #[allow(clippy::unnecessary_wraps)]
297            fn update_http_builder(
298                input: &crate::operation::update_dev_environment::UpdateDevEnvironmentInput,
299                builder: ::http_1x::request::Builder,
300            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
301                let mut uri = ::std::string::String::new();
302                uri_base(input, &mut uri)?;
303                ::std::result::Result::Ok(builder.method("PATCH").uri(uri))
304            }
305            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
306            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
307            builder
308        };
309        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_update_dev_environment::ser_update_dev_environment_input(
310            &input,
311        )?);
312        if let Some(content_length) = body.content_length() {
313            let content_length = content_length.to_string();
314            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
315        }
316        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
317    }
318}
319#[derive(Debug)]
320struct UpdateDevEnvironmentEndpointParamsInterceptor;
321
322#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
323impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateDevEnvironmentEndpointParamsInterceptor {
324    fn name(&self) -> &'static str {
325        "UpdateDevEnvironmentEndpointParamsInterceptor"
326    }
327
328    fn read_before_execution(
329        &self,
330        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
331            '_,
332            ::aws_smithy_runtime_api::client::interceptors::context::Input,
333            ::aws_smithy_runtime_api::client::interceptors::context::Output,
334            ::aws_smithy_runtime_api::client::interceptors::context::Error,
335        >,
336        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
337    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
338        let _input = context
339            .input()
340            .downcast_ref::<UpdateDevEnvironmentInput>()
341            .ok_or("failed to downcast to UpdateDevEnvironmentInput")?;
342
343        let params = crate::config::endpoint::Params::builder()
344            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
345            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
346            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
347            .build()
348            .map_err(|err| {
349                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
350            })?;
351        cfg.interceptor_state()
352            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
353        ::std::result::Result::Ok(())
354    }
355}
356
357// The get_* functions below are generated from JMESPath expressions in the
358// operationContextParams trait. They target the operation's input shape.
359
360/// Error type for the `UpdateDevEnvironmentError` operation.
361#[non_exhaustive]
362#[derive(::std::fmt::Debug)]
363pub enum UpdateDevEnvironmentError {
364    /// <p>The request was denied because you don't have sufficient access to perform this action. Verify that you are a member of a role that allows this action.</p>
365    AccessDeniedException(crate::types::error::AccessDeniedException),
366    /// <p>The request was denied because the requested operation would cause a conflict with the current state of a service resource associated with the request. Another user might have updated the resource. Reload, make sure you have the latest data, and then try again.</p>
367    ConflictException(crate::types::error::ConflictException),
368    /// <p>The request was denied because the specified resource was not found. Verify that the spelling is correct and that you have access to the resource.</p>
369    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
370    /// <p>The request was denied because one or more resources has reached its limits for the tier the space belongs to. Either reduce the number of resources, or change the tier if applicable.</p>
371    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
372    /// <p>The request was denied due to request throttling.</p>
373    ThrottlingException(crate::types::error::ThrottlingException),
374    /// <p>The request was denied because an input failed to satisfy the constraints specified by the service. Check the spelling and input requirements, and then try again.</p>
375    ValidationException(crate::types::error::ValidationException),
376    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
377    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
378    variable wildcard pattern and check `.code()`:
379     \
380    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
381     \
382    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-UpdateDevEnvironmentError) for what information is available for the error.")]
383    Unhandled(crate::error::sealed_unhandled::Unhandled),
384}
385impl UpdateDevEnvironmentError {
386    /// Creates the `UpdateDevEnvironmentError::Unhandled` variant from any error type.
387    pub fn unhandled(
388        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
389    ) -> Self {
390        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
391            source: err.into(),
392            meta: ::std::default::Default::default(),
393        })
394    }
395
396    /// Creates the `UpdateDevEnvironmentError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
397    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
398        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
399            source: err.clone().into(),
400            meta: err,
401        })
402    }
403    ///
404    /// Returns error metadata, which includes the error code, message,
405    /// request ID, and potentially additional information.
406    ///
407    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
408        match self {
409            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
410            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
411            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
412            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
413            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
414            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
415            Self::Unhandled(e) => &e.meta,
416        }
417    }
418    /// Returns `true` if the error kind is `UpdateDevEnvironmentError::AccessDeniedException`.
419    pub fn is_access_denied_exception(&self) -> bool {
420        matches!(self, Self::AccessDeniedException(_))
421    }
422    /// Returns `true` if the error kind is `UpdateDevEnvironmentError::ConflictException`.
423    pub fn is_conflict_exception(&self) -> bool {
424        matches!(self, Self::ConflictException(_))
425    }
426    /// Returns `true` if the error kind is `UpdateDevEnvironmentError::ResourceNotFoundException`.
427    pub fn is_resource_not_found_exception(&self) -> bool {
428        matches!(self, Self::ResourceNotFoundException(_))
429    }
430    /// Returns `true` if the error kind is `UpdateDevEnvironmentError::ServiceQuotaExceededException`.
431    pub fn is_service_quota_exceeded_exception(&self) -> bool {
432        matches!(self, Self::ServiceQuotaExceededException(_))
433    }
434    /// Returns `true` if the error kind is `UpdateDevEnvironmentError::ThrottlingException`.
435    pub fn is_throttling_exception(&self) -> bool {
436        matches!(self, Self::ThrottlingException(_))
437    }
438    /// Returns `true` if the error kind is `UpdateDevEnvironmentError::ValidationException`.
439    pub fn is_validation_exception(&self) -> bool {
440        matches!(self, Self::ValidationException(_))
441    }
442}
443impl ::std::error::Error for UpdateDevEnvironmentError {
444    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
445        match self {
446            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
447            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
448            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
449            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
450            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
451            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
452            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
453        }
454    }
455}
456impl ::std::fmt::Display for UpdateDevEnvironmentError {
457    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
458        match self {
459            Self::AccessDeniedException(_inner) => _inner.fmt(f),
460            Self::ConflictException(_inner) => _inner.fmt(f),
461            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
462            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
463            Self::ThrottlingException(_inner) => _inner.fmt(f),
464            Self::ValidationException(_inner) => _inner.fmt(f),
465            Self::Unhandled(_inner) => {
466                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
467                    write!(f, "unhandled error ({code})")
468                } else {
469                    f.write_str("unhandled error")
470                }
471            }
472        }
473    }
474}
475impl ::aws_smithy_types::retry::ProvideErrorKind for UpdateDevEnvironmentError {
476    fn code(&self) -> ::std::option::Option<&str> {
477        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
478    }
479    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
480        match self {
481            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
482            _ => ::std::option::Option::None,
483        }
484    }
485}
486impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for UpdateDevEnvironmentError {
487    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
488        match self {
489            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
490            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
491            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
492            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
493            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
494            Self::ValidationException(_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 UpdateDevEnvironmentError {
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::update_dev_environment::UpdateDevEnvironmentError {
511    fn request_id(&self) -> Option<&str> {
512        self.meta().request_id()
513    }
514}
515
516pub use crate::operation::update_dev_environment::_update_dev_environment_input::UpdateDevEnvironmentInput;
517
518pub use crate::operation::update_dev_environment::_update_dev_environment_output::UpdateDevEnvironmentOutput;
519
520mod _update_dev_environment_input;
521
522mod _update_dev_environment_output;
523
524/// Builders
525pub mod builders;