Skip to main content

aws_sdk_rds/operation/
create_db_cluster.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateDBCluster`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateDBCluster;
6impl CreateDBCluster {
7    /// Creates a new `CreateDBCluster`
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_db_cluster::CreateDbClusterInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_db_cluster::CreateDbClusterOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_db_cluster::CreateDBClusterError,
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_db_cluster::CreateDBClusterError>()
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_db_cluster::CreateDbClusterOutput>()
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_db_cluster::CreateDbClusterInput,
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("RDS", "CreateDBCluster", 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                "RDS.CreateDBCluster",
59                "rpc.service" = "RDS",
60                "rpc.method" = "CreateDBCluster",
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 CreateDBCluster {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateDBCluster");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateDBClusterRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateDBClusterResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateDBCluster")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
106        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("CreateDBCluster", "RDS"));
107        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
108        signing_options.double_uri_encode = true;
109        signing_options.content_sha256_header = false;
110        signing_options.normalize_uri_path = true;
111        signing_options.payload_override = None;
112
113        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
114            signing_options,
115            ..::std::default::Default::default()
116        });
117
118        ::std::option::Option::Some(cfg.freeze())
119    }
120
121    fn runtime_components(
122        &self,
123        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
124    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
125        #[allow(unused_mut)]
126        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateDBCluster")
127            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
128                CreateDBClusterTelemetryInputCaptureInterceptor,
129            ))
130            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
131                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
132            ))
133            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
134                CreateDBClusterEndpointParamsInterceptor,
135            ))
136            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
137                crate::operation::create_db_cluster::CreateDBClusterError,
138            >::new())
139            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
140                crate::operation::create_db_cluster::CreateDBClusterError,
141            >::new())
142            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
143                crate::operation::create_db_cluster::CreateDBClusterError,
144            >::new());
145
146        ::std::borrow::Cow::Owned(rcb)
147    }
148}
149
150#[derive(Debug)]
151struct CreateDBClusterTelemetryInputCaptureInterceptor;
152
153#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
154impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDBClusterTelemetryInputCaptureInterceptor {
155    fn name(&self) -> &'static str {
156        "CreateDBClusterTelemetryInputCaptureInterceptor"
157    }
158
159    fn read_before_execution(
160        &self,
161        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
162            '_,
163            ::aws_smithy_runtime_api::client::interceptors::context::Input,
164            ::aws_smithy_runtime_api::client::interceptors::context::Output,
165            ::aws_smithy_runtime_api::client::interceptors::context::Error,
166        >,
167        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
168    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
169        // Nothing to do unless the customer opted in by naming members to record.
170        let ::std::option::Option::Some(requested) = cfg
171            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
172            .filter(|r| !r.is_empty())
173        else {
174            return ::std::result::Result::Ok(());
175        };
176
177        let ::std::option::Option::Some(input) = context.input().downcast_ref::<CreateDbClusterInput>() else {
178            // A mismatched input is not this interceptor's concern; skip quietly.
179            return ::std::result::Result::Ok(());
180        };
181
182        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
183        if requested.should_capture("CharacterSetName") {
184            if let ::std::option::Option::Some(value) = input.character_set_name.as_deref() {
185                captured.insert("CharacterSetName", value);
186            }
187        }
188        if requested.should_capture("DatabaseName") {
189            if let ::std::option::Option::Some(value) = input.database_name.as_deref() {
190                captured.insert("DatabaseName", value);
191            }
192        }
193        if requested.should_capture("DBClusterIdentifier") {
194            if let ::std::option::Option::Some(value) = input.db_cluster_identifier.as_deref() {
195                captured.insert("DBClusterIdentifier", value);
196            }
197        }
198        if requested.should_capture("DBClusterParameterGroupName") {
199            if let ::std::option::Option::Some(value) = input.db_cluster_parameter_group_name.as_deref() {
200                captured.insert("DBClusterParameterGroupName", value);
201            }
202        }
203        if requested.should_capture("DBSubnetGroupName") {
204            if let ::std::option::Option::Some(value) = input.db_subnet_group_name.as_deref() {
205                captured.insert("DBSubnetGroupName", value);
206            }
207        }
208        if requested.should_capture("Engine") {
209            if let ::std::option::Option::Some(value) = input.engine.as_deref() {
210                captured.insert("Engine", value);
211            }
212        }
213        if requested.should_capture("EngineVersion") {
214            if let ::std::option::Option::Some(value) = input.engine_version.as_deref() {
215                captured.insert("EngineVersion", value);
216            }
217        }
218        if requested.should_capture("MasterUsername") {
219            if let ::std::option::Option::Some(value) = input.master_username.as_deref() {
220                captured.insert("MasterUsername", value);
221            }
222        }
223        if requested.should_capture("OptionGroupName") {
224            if let ::std::option::Option::Some(value) = input.option_group_name.as_deref() {
225                captured.insert("OptionGroupName", value);
226            }
227        }
228        if requested.should_capture("PreferredBackupWindow") {
229            if let ::std::option::Option::Some(value) = input.preferred_backup_window.as_deref() {
230                captured.insert("PreferredBackupWindow", value);
231            }
232        }
233        if requested.should_capture("PreferredMaintenanceWindow") {
234            if let ::std::option::Option::Some(value) = input.preferred_maintenance_window.as_deref() {
235                captured.insert("PreferredMaintenanceWindow", value);
236            }
237        }
238        if requested.should_capture("ReplicationSourceIdentifier") {
239            if let ::std::option::Option::Some(value) = input.replication_source_identifier.as_deref() {
240                captured.insert("ReplicationSourceIdentifier", value);
241            }
242        }
243        if requested.should_capture("KmsKeyId") {
244            if let ::std::option::Option::Some(value) = input.kms_key_id.as_deref() {
245                captured.insert("KmsKeyId", value);
246            }
247        }
248        if requested.should_capture("EngineMode") {
249            if let ::std::option::Option::Some(value) = input.engine_mode.as_deref() {
250                captured.insert("EngineMode", value);
251            }
252        }
253        if requested.should_capture("DBClusterInstanceClass") {
254            if let ::std::option::Option::Some(value) = input.db_cluster_instance_class.as_deref() {
255                captured.insert("DBClusterInstanceClass", value);
256            }
257        }
258        if requested.should_capture("StorageType") {
259            if let ::std::option::Option::Some(value) = input.storage_type.as_deref() {
260                captured.insert("StorageType", value);
261            }
262        }
263        if requested.should_capture("GlobalClusterIdentifier") {
264            if let ::std::option::Option::Some(value) = input.global_cluster_identifier.as_deref() {
265                captured.insert("GlobalClusterIdentifier", value);
266            }
267        }
268        if requested.should_capture("Domain") {
269            if let ::std::option::Option::Some(value) = input.domain.as_deref() {
270                captured.insert("Domain", value);
271            }
272        }
273        if requested.should_capture("DomainIAMRoleName") {
274            if let ::std::option::Option::Some(value) = input.domain_iam_role_name.as_deref() {
275                captured.insert("DomainIAMRoleName", value);
276            }
277        }
278        if requested.should_capture("NetworkType") {
279            if let ::std::option::Option::Some(value) = input.network_type.as_deref() {
280                captured.insert("NetworkType", value);
281            }
282        }
283        if requested.should_capture("MonitoringRoleArn") {
284            if let ::std::option::Option::Some(value) = input.monitoring_role_arn.as_deref() {
285                captured.insert("MonitoringRoleArn", value);
286            }
287        }
288        if requested.should_capture("PerformanceInsightsKMSKeyId") {
289            if let ::std::option::Option::Some(value) = input.performance_insights_kms_key_id.as_deref() {
290                captured.insert("PerformanceInsightsKMSKeyId", value);
291            }
292        }
293        if requested.should_capture("DBSystemId") {
294            if let ::std::option::Option::Some(value) = input.db_system_id.as_deref() {
295                captured.insert("DBSystemId", value);
296            }
297        }
298        if requested.should_capture("MasterUserSecretKmsKeyId") {
299            if let ::std::option::Option::Some(value) = input.master_user_secret_kms_key_id.as_deref() {
300                captured.insert("MasterUserSecretKmsKeyId", value);
301            }
302        }
303        if requested.should_capture("CACertificateIdentifier") {
304            if let ::std::option::Option::Some(value) = input.ca_certificate_identifier.as_deref() {
305                captured.insert("CACertificateIdentifier", value);
306            }
307        }
308        if requested.should_capture("EngineLifecycleSupport") {
309            if let ::std::option::Option::Some(value) = input.engine_lifecycle_support.as_deref() {
310                captured.insert("EngineLifecycleSupport", value);
311            }
312        }
313
314        cfg.interceptor_state().store_put(captured);
315        ::std::result::Result::Ok(())
316    }
317}
318#[derive(Debug)]
319struct CreateDBClusterResponseDeserializer;
320impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateDBClusterResponseDeserializer {
321    fn deserialize_nonstreaming_with_config(
322        &self,
323        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
324        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
325    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
326        let (success, status) = (response.status().is_success(), response.status().as_u16());
327        let headers = response.headers();
328        let body = response.body().bytes().expect("body loaded");
329        #[allow(unused_mut)]
330        let mut force_error = false;
331        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
332        let parse_result = if !success && status != 200 || force_error {
333            crate::protocol_serde::shape_create_db_cluster::de_create_db_cluster_http_error(status, headers, body)
334        } else {
335            crate::protocol_serde::shape_create_db_cluster::de_create_db_cluster_http_response(status, headers, body)
336        };
337        crate::protocol_serde::type_erase_result(parse_result)
338    }
339}
340#[derive(Debug)]
341struct CreateDBClusterRequestSerializer;
342impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateDBClusterRequestSerializer {
343    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
344    fn serialize_input(
345        &self,
346        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
347        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
348    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
349        let input = input
350            .downcast::<crate::operation::create_db_cluster::CreateDbClusterInput>()
351            .expect("correct type");
352        let _header_serialization_settings = _cfg
353            .load::<crate::serialization_settings::HeaderSerializationSettings>()
354            .cloned()
355            .unwrap_or_default();
356        let mut request_builder = {
357            #[allow(clippy::uninlined_format_args)]
358            fn uri_base(
359                _input: &crate::operation::create_db_cluster::CreateDbClusterInput,
360                output: &mut ::std::string::String,
361            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
362                use ::std::fmt::Write as _;
363                ::std::write!(output, "/").expect("formatting should succeed");
364                ::std::result::Result::Ok(())
365            }
366            #[allow(clippy::unnecessary_wraps)]
367            fn update_http_builder(
368                input: &crate::operation::create_db_cluster::CreateDbClusterInput,
369                builder: ::http_1x::request::Builder,
370            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
371                let mut uri = ::std::string::String::new();
372                uri_base(input, &mut uri)?;
373                ::std::result::Result::Ok(builder.method("POST").uri(uri))
374            }
375            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
376            builder =
377                _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
378            builder
379        };
380        let body = ::aws_smithy_types::body::SdkBody::from(
381            crate::protocol_serde::shape_create_db_cluster_input::ser_create_db_cluster_input_input_input(&input)?,
382        );
383        if let Some(content_length) = body.content_length() {
384            let content_length = content_length.to_string();
385            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
386        }
387        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
388    }
389}
390#[derive(Debug)]
391struct CreateDBClusterEndpointParamsInterceptor;
392
393#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
394impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateDBClusterEndpointParamsInterceptor {
395    fn name(&self) -> &'static str {
396        "CreateDBClusterEndpointParamsInterceptor"
397    }
398
399    fn read_before_execution(
400        &self,
401        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
402            '_,
403            ::aws_smithy_runtime_api::client::interceptors::context::Input,
404            ::aws_smithy_runtime_api::client::interceptors::context::Output,
405            ::aws_smithy_runtime_api::client::interceptors::context::Error,
406        >,
407        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
408    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
409        let _input = context
410            .input()
411            .downcast_ref::<CreateDbClusterInput>()
412            .ok_or("failed to downcast to CreateDbClusterInput")?;
413
414        let params = crate::config::endpoint::Params::builder()
415            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
416            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
417            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
418            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
419            .build()
420            .map_err(|err| {
421                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
422            })?;
423        cfg.interceptor_state()
424            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
425        ::std::result::Result::Ok(())
426    }
427}
428
429// The get_* functions below are generated from JMESPath expressions in the
430// operationContextParams trait. They target the operation's input shape.
431
432/// Error type for the `CreateDBClusterError` operation.
433#[non_exhaustive]
434#[derive(::std::fmt::Debug)]
435pub enum CreateDBClusterError {
436    /// <p>The user already has a DB cluster with the given identifier.</p>
437    DbClusterAlreadyExistsFault(crate::types::error::DbClusterAlreadyExistsFault),
438    /// <p><code>DBClusterIdentifier</code> doesn't refer to an existing DB cluster.</p>
439    DbClusterNotFoundFault(crate::types::error::DbClusterNotFoundFault),
440    /// <p><code>DBClusterParameterGroupName</code> doesn't refer to an existing DB cluster parameter group.</p>
441    DbClusterParameterGroupNotFoundFault(crate::types::error::DbClusterParameterGroupNotFoundFault),
442    /// <p>The user attempted to create a new DB cluster and the user has already reached the maximum allowed DB cluster quota.</p>
443    DbClusterQuotaExceededFault(crate::types::error::DbClusterQuotaExceededFault),
444    /// <p>You have exceeded the maximum number of IAM roles that can be associated with the specified DB cluster.</p>
445    DbClusterRoleQuotaExceededFault(crate::types::error::DbClusterRoleQuotaExceededFault),
446    /// <p><code>DBInstanceIdentifier</code> doesn't refer to an existing DB instance.</p>
447    DbInstanceNotFoundFault(crate::types::error::DbInstanceNotFoundFault),
448    /// <p>Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.</p>
449    DbSubnetGroupDoesNotCoverEnoughAZs(crate::types::error::DbSubnetGroupDoesNotCoverEnoughAZs),
450    /// <p><code>DBSubnetGroupName</code> doesn't refer to an existing DB subnet group.</p>
451    DbSubnetGroupNotFoundFault(crate::types::error::DbSubnetGroupNotFoundFault),
452    /// <p><code>Domain</code> doesn't refer to an existing Active Directory domain.</p>
453    DomainNotFoundFault(crate::types::error::DomainNotFoundFault),
454    /// <p>The <code>GlobalClusterIdentifier</code> doesn't refer to an existing global database cluster.</p>
455    GlobalClusterNotFoundFault(crate::types::error::GlobalClusterNotFoundFault),
456    /// <p>The specified DB instance class isn't available in the specified Availability Zone.</p>
457    InsufficientDbInstanceCapacityFault(crate::types::error::InsufficientDbInstanceCapacityFault),
458    /// <p>There is insufficient storage available for the current action. You might be able to resolve this error by updating your subnet group to use different Availability Zones that have more storage available.</p>
459    InsufficientStorageClusterCapacityFault(crate::types::error::InsufficientStorageClusterCapacityFault),
460    /// <p>The requested operation can't be performed while the cluster is in this state.</p>
461    InvalidDbClusterStateFault(crate::types::error::InvalidDbClusterStateFault),
462    /// <p>The DB instance isn't in a valid state.</p>
463    InvalidDbInstanceStateFault(crate::types::error::InvalidDbInstanceStateFault),
464    /// <p>The DBSubnetGroup doesn't belong to the same VPC as that of an existing cross-region read replica of the same source instance.</p>
465    InvalidDbSubnetGroupFault(crate::types::error::InvalidDbSubnetGroupFault),
466    /// <p>The DB subnet group cannot be deleted because it's in use.</p>
467    InvalidDbSubnetGroupStateFault(crate::types::error::InvalidDbSubnetGroupStateFault),
468    /// <p>The global cluster is in an invalid state and can't perform the requested operation.</p>
469    InvalidGlobalClusterStateFault(crate::types::error::InvalidGlobalClusterStateFault),
470    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
471    InvalidSubnet(crate::types::error::InvalidSubnet),
472    /// <p>The DB subnet group doesn't cover all Availability Zones after it's created because of users' change.</p>
473    InvalidVpcNetworkStateFault(crate::types::error::InvalidVpcNetworkStateFault),
474    /// <p>An error occurred accessing an Amazon Web Services KMS key.</p>
475    KmsKeyNotAccessibleFault(crate::types::error::KmsKeyNotAccessibleFault),
476    /// <p>The network type is invalid for the DB instance. Valid nework type values are <code>IPV4</code> and <code>DUAL</code>.</p>
477    NetworkTypeNotSupported(crate::types::error::NetworkTypeNotSupported),
478    /// <p>The specified option group could not be found.</p>
479    OptionGroupNotFoundFault(crate::types::error::OptionGroupNotFoundFault),
480    /// <p>The request would result in the user exceeding the allowed amount of storage available across all DB instances.</p>
481    StorageQuotaExceededFault(crate::types::error::StorageQuotaExceededFault),
482    /// <p>The specified <code>StorageType</code> can't be associated with the DB instance.</p>
483    StorageTypeNotSupportedFault(crate::types::error::StorageTypeNotSupportedFault),
484    /// <p>The operation violates VPC encryption control settings. Make sure that your DB instance type supports the Nitro encryption-in-transit capability, or modify your VPC's encryption controls to not enforce encryption-in-transit.</p>
485    VpcEncryptionControlViolationException(crate::types::error::VpcEncryptionControlViolationException),
486    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
487    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
488    variable wildcard pattern and check `.code()`:
489     \
490    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
491     \
492    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateDBClusterError) for what information is available for the error.")]
493    Unhandled(crate::error::sealed_unhandled::Unhandled),
494}
495impl CreateDBClusterError {
496    /// Creates the `CreateDBClusterError::Unhandled` variant from any error type.
497    pub fn unhandled(
498        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
499    ) -> Self {
500        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
501            source: err.into(),
502            meta: ::std::default::Default::default(),
503        })
504    }
505
506    /// Creates the `CreateDBClusterError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
507    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
508        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
509            source: err.clone().into(),
510            meta: err,
511        })
512    }
513    ///
514    /// Returns error metadata, which includes the error code, message,
515    /// request ID, and potentially additional information.
516    ///
517    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
518        match self {
519            Self::DbClusterAlreadyExistsFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
520            Self::DbClusterNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
521            Self::DbClusterParameterGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
522            Self::DbClusterQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
523            Self::DbClusterRoleQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
524            Self::DbInstanceNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
525            Self::DbSubnetGroupDoesNotCoverEnoughAZs(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
526            Self::DbSubnetGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
527            Self::DomainNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
528            Self::GlobalClusterNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
529            Self::InsufficientDbInstanceCapacityFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
530            Self::InsufficientStorageClusterCapacityFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
531            Self::InvalidDbClusterStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
532            Self::InvalidDbInstanceStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
533            Self::InvalidDbSubnetGroupFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
534            Self::InvalidDbSubnetGroupStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
535            Self::InvalidGlobalClusterStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
536            Self::InvalidSubnet(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
537            Self::InvalidVpcNetworkStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
538            Self::KmsKeyNotAccessibleFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
539            Self::NetworkTypeNotSupported(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
540            Self::OptionGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
541            Self::StorageQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
542            Self::StorageTypeNotSupportedFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
543            Self::VpcEncryptionControlViolationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
544            Self::Unhandled(e) => &e.meta,
545        }
546    }
547    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterAlreadyExistsFault`.
548    pub fn is_db_cluster_already_exists_fault(&self) -> bool {
549        matches!(self, Self::DbClusterAlreadyExistsFault(_))
550    }
551    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterNotFoundFault`.
552    pub fn is_db_cluster_not_found_fault(&self) -> bool {
553        matches!(self, Self::DbClusterNotFoundFault(_))
554    }
555    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterParameterGroupNotFoundFault`.
556    pub fn is_db_cluster_parameter_group_not_found_fault(&self) -> bool {
557        matches!(self, Self::DbClusterParameterGroupNotFoundFault(_))
558    }
559    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterQuotaExceededFault`.
560    pub fn is_db_cluster_quota_exceeded_fault(&self) -> bool {
561        matches!(self, Self::DbClusterQuotaExceededFault(_))
562    }
563    /// Returns `true` if the error kind is `CreateDBClusterError::DbClusterRoleQuotaExceededFault`.
564    pub fn is_db_cluster_role_quota_exceeded_fault(&self) -> bool {
565        matches!(self, Self::DbClusterRoleQuotaExceededFault(_))
566    }
567    /// Returns `true` if the error kind is `CreateDBClusterError::DbInstanceNotFoundFault`.
568    pub fn is_db_instance_not_found_fault(&self) -> bool {
569        matches!(self, Self::DbInstanceNotFoundFault(_))
570    }
571    /// Returns `true` if the error kind is `CreateDBClusterError::DbSubnetGroupDoesNotCoverEnoughAZs`.
572    pub fn is_db_subnet_group_does_not_cover_enough_azs(&self) -> bool {
573        matches!(self, Self::DbSubnetGroupDoesNotCoverEnoughAZs(_))
574    }
575    /// Returns `true` if the error kind is `CreateDBClusterError::DbSubnetGroupNotFoundFault`.
576    pub fn is_db_subnet_group_not_found_fault(&self) -> bool {
577        matches!(self, Self::DbSubnetGroupNotFoundFault(_))
578    }
579    /// Returns `true` if the error kind is `CreateDBClusterError::DomainNotFoundFault`.
580    pub fn is_domain_not_found_fault(&self) -> bool {
581        matches!(self, Self::DomainNotFoundFault(_))
582    }
583    /// Returns `true` if the error kind is `CreateDBClusterError::GlobalClusterNotFoundFault`.
584    pub fn is_global_cluster_not_found_fault(&self) -> bool {
585        matches!(self, Self::GlobalClusterNotFoundFault(_))
586    }
587    /// Returns `true` if the error kind is `CreateDBClusterError::InsufficientDbInstanceCapacityFault`.
588    pub fn is_insufficient_db_instance_capacity_fault(&self) -> bool {
589        matches!(self, Self::InsufficientDbInstanceCapacityFault(_))
590    }
591    /// Returns `true` if the error kind is `CreateDBClusterError::InsufficientStorageClusterCapacityFault`.
592    pub fn is_insufficient_storage_cluster_capacity_fault(&self) -> bool {
593        matches!(self, Self::InsufficientStorageClusterCapacityFault(_))
594    }
595    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidDbClusterStateFault`.
596    pub fn is_invalid_db_cluster_state_fault(&self) -> bool {
597        matches!(self, Self::InvalidDbClusterStateFault(_))
598    }
599    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidDbInstanceStateFault`.
600    pub fn is_invalid_db_instance_state_fault(&self) -> bool {
601        matches!(self, Self::InvalidDbInstanceStateFault(_))
602    }
603    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidDbSubnetGroupFault`.
604    pub fn is_invalid_db_subnet_group_fault(&self) -> bool {
605        matches!(self, Self::InvalidDbSubnetGroupFault(_))
606    }
607    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidDbSubnetGroupStateFault`.
608    pub fn is_invalid_db_subnet_group_state_fault(&self) -> bool {
609        matches!(self, Self::InvalidDbSubnetGroupStateFault(_))
610    }
611    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidGlobalClusterStateFault`.
612    pub fn is_invalid_global_cluster_state_fault(&self) -> bool {
613        matches!(self, Self::InvalidGlobalClusterStateFault(_))
614    }
615    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidSubnet`.
616    pub fn is_invalid_subnet(&self) -> bool {
617        matches!(self, Self::InvalidSubnet(_))
618    }
619    /// Returns `true` if the error kind is `CreateDBClusterError::InvalidVpcNetworkStateFault`.
620    pub fn is_invalid_vpc_network_state_fault(&self) -> bool {
621        matches!(self, Self::InvalidVpcNetworkStateFault(_))
622    }
623    /// Returns `true` if the error kind is `CreateDBClusterError::KmsKeyNotAccessibleFault`.
624    pub fn is_kms_key_not_accessible_fault(&self) -> bool {
625        matches!(self, Self::KmsKeyNotAccessibleFault(_))
626    }
627    /// Returns `true` if the error kind is `CreateDBClusterError::NetworkTypeNotSupported`.
628    pub fn is_network_type_not_supported(&self) -> bool {
629        matches!(self, Self::NetworkTypeNotSupported(_))
630    }
631    /// Returns `true` if the error kind is `CreateDBClusterError::OptionGroupNotFoundFault`.
632    pub fn is_option_group_not_found_fault(&self) -> bool {
633        matches!(self, Self::OptionGroupNotFoundFault(_))
634    }
635    /// Returns `true` if the error kind is `CreateDBClusterError::StorageQuotaExceededFault`.
636    pub fn is_storage_quota_exceeded_fault(&self) -> bool {
637        matches!(self, Self::StorageQuotaExceededFault(_))
638    }
639    /// Returns `true` if the error kind is `CreateDBClusterError::StorageTypeNotSupportedFault`.
640    pub fn is_storage_type_not_supported_fault(&self) -> bool {
641        matches!(self, Self::StorageTypeNotSupportedFault(_))
642    }
643    /// Returns `true` if the error kind is `CreateDBClusterError::VpcEncryptionControlViolationException`.
644    pub fn is_vpc_encryption_control_violation_exception(&self) -> bool {
645        matches!(self, Self::VpcEncryptionControlViolationException(_))
646    }
647}
648impl ::std::error::Error for CreateDBClusterError {
649    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
650        match self {
651            Self::DbClusterAlreadyExistsFault(_inner) => ::std::option::Option::Some(_inner),
652            Self::DbClusterNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
653            Self::DbClusterParameterGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
654            Self::DbClusterQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
655            Self::DbClusterRoleQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
656            Self::DbInstanceNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
657            Self::DbSubnetGroupDoesNotCoverEnoughAZs(_inner) => ::std::option::Option::Some(_inner),
658            Self::DbSubnetGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
659            Self::DomainNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
660            Self::GlobalClusterNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
661            Self::InsufficientDbInstanceCapacityFault(_inner) => ::std::option::Option::Some(_inner),
662            Self::InsufficientStorageClusterCapacityFault(_inner) => ::std::option::Option::Some(_inner),
663            Self::InvalidDbClusterStateFault(_inner) => ::std::option::Option::Some(_inner),
664            Self::InvalidDbInstanceStateFault(_inner) => ::std::option::Option::Some(_inner),
665            Self::InvalidDbSubnetGroupFault(_inner) => ::std::option::Option::Some(_inner),
666            Self::InvalidDbSubnetGroupStateFault(_inner) => ::std::option::Option::Some(_inner),
667            Self::InvalidGlobalClusterStateFault(_inner) => ::std::option::Option::Some(_inner),
668            Self::InvalidSubnet(_inner) => ::std::option::Option::Some(_inner),
669            Self::InvalidVpcNetworkStateFault(_inner) => ::std::option::Option::Some(_inner),
670            Self::KmsKeyNotAccessibleFault(_inner) => ::std::option::Option::Some(_inner),
671            Self::NetworkTypeNotSupported(_inner) => ::std::option::Option::Some(_inner),
672            Self::OptionGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
673            Self::StorageQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
674            Self::StorageTypeNotSupportedFault(_inner) => ::std::option::Option::Some(_inner),
675            Self::VpcEncryptionControlViolationException(_inner) => ::std::option::Option::Some(_inner),
676            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
677        }
678    }
679}
680impl ::std::fmt::Display for CreateDBClusterError {
681    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
682        match self {
683            Self::DbClusterAlreadyExistsFault(_inner) => _inner.fmt(f),
684            Self::DbClusterNotFoundFault(_inner) => _inner.fmt(f),
685            Self::DbClusterParameterGroupNotFoundFault(_inner) => _inner.fmt(f),
686            Self::DbClusterQuotaExceededFault(_inner) => _inner.fmt(f),
687            Self::DbClusterRoleQuotaExceededFault(_inner) => _inner.fmt(f),
688            Self::DbInstanceNotFoundFault(_inner) => _inner.fmt(f),
689            Self::DbSubnetGroupDoesNotCoverEnoughAZs(_inner) => _inner.fmt(f),
690            Self::DbSubnetGroupNotFoundFault(_inner) => _inner.fmt(f),
691            Self::DomainNotFoundFault(_inner) => _inner.fmt(f),
692            Self::GlobalClusterNotFoundFault(_inner) => _inner.fmt(f),
693            Self::InsufficientDbInstanceCapacityFault(_inner) => _inner.fmt(f),
694            Self::InsufficientStorageClusterCapacityFault(_inner) => _inner.fmt(f),
695            Self::InvalidDbClusterStateFault(_inner) => _inner.fmt(f),
696            Self::InvalidDbInstanceStateFault(_inner) => _inner.fmt(f),
697            Self::InvalidDbSubnetGroupFault(_inner) => _inner.fmt(f),
698            Self::InvalidDbSubnetGroupStateFault(_inner) => _inner.fmt(f),
699            Self::InvalidGlobalClusterStateFault(_inner) => _inner.fmt(f),
700            Self::InvalidSubnet(_inner) => _inner.fmt(f),
701            Self::InvalidVpcNetworkStateFault(_inner) => _inner.fmt(f),
702            Self::KmsKeyNotAccessibleFault(_inner) => _inner.fmt(f),
703            Self::NetworkTypeNotSupported(_inner) => _inner.fmt(f),
704            Self::OptionGroupNotFoundFault(_inner) => _inner.fmt(f),
705            Self::StorageQuotaExceededFault(_inner) => _inner.fmt(f),
706            Self::StorageTypeNotSupportedFault(_inner) => _inner.fmt(f),
707            Self::VpcEncryptionControlViolationException(_inner) => _inner.fmt(f),
708            Self::Unhandled(_inner) => {
709                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
710                    write!(f, "unhandled error ({code})")
711                } else {
712                    f.write_str("unhandled error")
713                }
714            }
715        }
716    }
717}
718impl ::aws_smithy_types::retry::ProvideErrorKind for CreateDBClusterError {
719    fn code(&self) -> ::std::option::Option<&str> {
720        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
721    }
722    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
723        ::std::option::Option::None
724    }
725}
726impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateDBClusterError {
727    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
728        match self {
729            Self::DbClusterAlreadyExistsFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
730            Self::DbClusterNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
731            Self::DbClusterParameterGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
732            Self::DbClusterQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
733            Self::DbClusterRoleQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
734            Self::DbInstanceNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
735            Self::DbSubnetGroupDoesNotCoverEnoughAZs(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
736            Self::DbSubnetGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
737            Self::DomainNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
738            Self::GlobalClusterNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
739            Self::InsufficientDbInstanceCapacityFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
740            Self::InsufficientStorageClusterCapacityFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
741            Self::InvalidDbClusterStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
742            Self::InvalidDbInstanceStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
743            Self::InvalidDbSubnetGroupFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
744            Self::InvalidDbSubnetGroupStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
745            Self::InvalidGlobalClusterStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
746            Self::InvalidSubnet(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
747            Self::InvalidVpcNetworkStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
748            Self::KmsKeyNotAccessibleFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
749            Self::NetworkTypeNotSupported(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
750            Self::OptionGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
751            Self::StorageQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
752            Self::StorageTypeNotSupportedFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
753            Self::VpcEncryptionControlViolationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
754            Self::Unhandled(_inner) => &_inner.meta,
755        }
756    }
757}
758impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateDBClusterError {
759    fn create_unhandled_error(
760        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
761        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
762    ) -> Self {
763        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
764            source,
765            meta: meta.unwrap_or_default(),
766        })
767    }
768}
769impl ::aws_types::request_id::RequestId for crate::operation::create_db_cluster::CreateDBClusterError {
770    fn request_id(&self) -> Option<&str> {
771        self.meta().request_id()
772    }
773}
774
775pub use crate::operation::create_db_cluster::_create_db_cluster_input::CreateDbClusterInput;
776
777pub use crate::operation::create_db_cluster::_create_db_cluster_output::CreateDbClusterOutput;
778
779mod _create_db_cluster_input;
780
781mod _create_db_cluster_output;
782
783/// Builders
784pub mod builders;