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: _lf_tag_policy_details.rs
    path of file: ./repos/aws-sdk-rust/sdk/dataexchange/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>Details about the LF-tag policy.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct LfTagPolicyDetails {
    /// <p>The identifier for the AWS Glue Data Catalog.</p>
    pub catalog_id: ::std::string::String,
    /// <p>The resource type for which the LF-tag policy applies.</p>
    pub resource_type: crate::types::LfResourceType,
    /// <p>Details for the Lake Formation Resources included in the LF-tag policy.</p>
    pub resource_details: ::std::option::Option<crate::types::LfResourceDetails>,
}
impl LfTa
    
    pub fn build(self) -> ::std::result::Result<crate::types::LfTagPolicyDetails, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::LfTagPolicyDetails {
            catalog_id: self.catalog_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "catalog_id",
                    "catalog_id was not specified but it is required when building LfTagPolicyDetails",
                )
            })?,
            resource_type: self.resource_type.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "resource_type",
                    "resource_type was not specified but it is required when building LfTagPolicyDetails",
                )
            })?,
            resource_details: self.resource_details,
        })
    }