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: _configured_table_analysis_rule.rs
    path of file: ./repos/aws-sdk-rust/sdk/cleanrooms/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>A configured table analysis rule, which limits how data for this table can be used.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct ConfiguredTableAnalysisRule {
    /// <p>The unique ID for the configured table.</p>
    pub configured_table_id: ::std::string::String,
    /// <p>The unique ARN for the configured table.</p>
    pub configured_table_arn: ::std::string::String,
    /// <p>The policy that controls SQL query rules.</p>
    pub policy: ::std::option::Option<crate::types::ConfiguredTableAnalysisRulePolicy>,
    /// <p>The type of configured table analysis rule.</p>
    pub r#type: crate::types::ConfiguredTableAnalysisRuleType,
    /// <p>The time the configured table analysis rule was created.</p>
    pub create_time: ::aws_smithy_types::DateTime,
    /// <p>The time the configured table analysis rule was last updated.</p>
    pub update_time: ::aws_smithy_types::DateTime,
}
impl ConfiguredTableAnalysisRule {
    /// <p>The unique ID for the configured table.</p>
    pub fn configured_table_id(&self) -> &str {
        use std::ops::Deref;
        self.configured_table_id.deref()
    }
    /// <p>The unique ARN for the configured table.</p>
    pub fn configured_table_arn(&self) -> &str {
        use std::ops::Deref;
        self.configured_table_arn.deref()
    }
    /// <p>The policy that controls SQL query rules.</p>
    pub fn policy(&self) -> ::std::option::Option<&crate::types::ConfiguredTableAnalysisRulePolicy> {
        self.policy.as_ref()
    }
    /// <p>The ty
    
    pub fn build(self) -> ::std::result::Result<crate::types::ConfiguredTableAnalysisRule, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::ConfiguredTableAnalysisRule {
            configured_table_id: self.configured_table_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "configured_table_id",
                    "configured_table_id was not specified but it is required when building ConfiguredTableAnalysisRule",
                )
            })?,
            configured_table_arn: self.configured_table_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "configured_table_arn",
                    "configured_table_arn was not specified but it is required when building ConfiguredTableAnalysisRule",
                )
            })?,
            policy: self.policy,
            r#type: self.r#type.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "r#type",
                    "r#type was not specified but it is required when building ConfiguredTableAnalysisRule",
                )
            })?,
            create_time: self.create_time.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "create_time",
                    "create_time was not specified but it is required when building ConfiguredTableAnalysisRule",
                )
            })?,
            update_time: self.update_time.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "update_time",
                    "update_time was not specified but it is required when building ConfiguredTableAnalysisRule",
                )
            })?,
        })
    }