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: _content_data.rs
    path of file: ./repos/aws-sdk-rust/sdk/wisdom/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>Information about the content.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
pub struct ContentData {
    /// <p>The Amazon Resource Name (ARN) of the content.</p>
    pub content_arn: ::std::string::String,
    /// <p>The identifier of the content.</p>
    pub content_id: ::std::string::String,
    /// <p>The Amazon Resource Name (ARN) of the knowledge base.</p>
    pub knowledge_base_arn: ::std::string::String,
    /// <p>The identifier of the knowledge base. This should not be a QUICK_RESPONSES type knowledge base if you're storing Wisdom Content resource to it.</p>
    pub knowledge_base_id: ::std::string::String,
    /// <p>The name of the content.</p>
    pub name: ::std::string::String,
    /// <p>The identifier of the content revision.</p>
    pub revision_id: ::std::string::String,
    /// <p>The title of the content.</p>
    pub title: ::std::string::String,
    /// <p>The media type of the content.</p>
    pub content_type: ::std::string::String,
    /// <p>The status of the content.</p>
    pub status: crate::types::ContentStatus,
    /// <p>A key/value map to store attributes without affecting tagging or recommendations. For example, when synchronizing data between an external system and Wisdom, you can store an external version identifier as metadata to utilize for determining drift.</p>
    pub metadata: ::std::collections::HashMap<::std::string::String, ::std::string::String>,
    /// <p>The tags used to organize, track, or control access for this resource.</p>
    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, :
    
    pub fn build(self) -> ::std::result::Result<crate::types::ContentData, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::ContentData {
            content_arn: self.content_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "content_arn",
                    "content_arn was not specified but it is required when building ContentData",
                )
            })?,
            content_id: self.content_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "content_id",
                    "content_id was not specified but it is required when building ContentData",
                )
            })?,
            knowledge_base_arn: self.knowledge_base_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "knowledge_base_arn",
                    "knowledge_base_arn was not specified but it is required when building ContentData",
                )
            })?,
            knowledge_base_id: self.knowledge_base_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "knowledge_base_id",
                    "knowledge_base_id was not specified but it is required when building ContentData",
                )
            })?,
            name: self.name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "name",
                    "name was not specified but it is required when building ContentData",
                )
            })?,
            revision_id: self.revision_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "revision_id",
                    "revision_id was not specified but it is required when building ContentData",
                )
            })?,
            title: self.title.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "title",
                    "title was not specified but it is required when building ContentData",
                )
            })?,
            content_type: self.content_type.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "content_type",
                    "content_type was not specified but it is required when building ContentData",
                )
            })?,
            status: self.status.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "status",
                    "status was not specified but it is required when building ContentData",
                )
            })?,
            metadata: self.metadata.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "metadata",
                    "metadata was not specified but it is required when building ContentData",
                )
            })?,
            tags: self.tags,
            link_out_uri: self.link_out_uri,
            url: self.url.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "url",
                    "url was not specified but it is required when building ContentData",
                )
            })?,
            url_expiry: self.url_expiry.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "url_expiry",
                    "url_expiry was not specified but it is required when building ContentData",
                )
            })?,
        })
    }