You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: _elasticsearch_settings.rs
    path of file: ./repos/aws-sdk-rust/sdk/databasemigration/src/types
    
    the code of the file until where you have to start completion: // Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>Provides information that defines an OpenSearch endpoint.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct ElasticsearchSettings {
    /// <p>The Amazon Resource Name (ARN) used by the service to access the IAM role. The role must allow the <code>iam:PassRole</code> action
    
    pub fn build(self) -> ::std::result::Result<crate::types::ElasticsearchSettings, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::ElasticsearchSettings {
            service_access_role_arn: self.service_access_role_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "service_access_role_arn",
                    "service_access_role_arn was not specified but it is required when building ElasticsearchSettings",
                )
            })?,
            endpoint_uri: self.endpoint_uri.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "endpoint_uri",
                    "endpoint_uri was not specified but it is required when building ElasticsearchSettings",
                )
            })?,
            full_load_error_percentage: self.full_load_error_percentage,
            error_retry_duration: self.error_retry_duration,
            use_new_mapping_type: self.use_new_mapping_type,
        })
    }