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: _report_definition.rs
    path of file: ./repos/aws-sdk-rust/sdk/costandusagereport/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>The definition of Amazon Web Services Cost and Usage Report. You can specify the report name, time unit, report format, compression format, S3 bucket, additional artifacts, and schema elements in the definition.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct ReportDefinition {
    /// <p>The name of the report that you want to create. The name must be unique, is case sensitive, and can't include spaces.</p>
    pub report_name: ::std::string::String,
    /// <p>The length of time covered by the report.</p>
    pub time_unit: crate::types::TimeUnit,
    /// <p>The format that Amazon Web Services saves the report in.</p>
    pub format: crate::types::ReportFormat,
    /// <p>The compression format that Amazon Web Services uses for the report.</p>
    pub compression: crate::types::CompressionFormat,
    /// <p>A list of strings that indicate additional content that Amazon Web Services includes in the report, such as individual resource IDs.</p>
    pub additional_schema_elements: ::std::vec::Vec<crate::types::SchemaElement>,
    /// <p>The S3 bucket where Amazon Web Services delivers the report.</p>
    pub s3_bucket: ::std::string::String,
    /// <p>The prefix that Amazon Web Services adds to the report name when Amazon Web Services delivers the report. Your prefix can't include spaces.</p>
    pub s3_prefix: ::std::string::String,
    /// <p>The region of the S3 bucket that Amazon Web Services delivers the report into.</p>
    pub s3_region: crate::types::AwsRegion,
    /// <p>A list of manifests that you want Amazon Web Services to create for this report.</p>
    pub additional_artifacts: ::std::option::Option<::std::vec::Vec<crate::types::AdditionalArtifact>>,
    /// <p>Whether you want Amazon Web Services to update your reports after they have been finalized if Amazon Web Services detects charges related to previous months. These charges can include refunds, credits, or support fees.</p>
    pub refresh_closed_reports: ::std::option::Option<bool>,
    /// <p>Whether you want Amazon Web Services to overwrite the previous version of each report or to deliver the report in addition to the previous versions.</p>
    pub report_versioning: ::std::option::Option<crate::types::ReportVersioning>,
    /// <p>The Amazon resource name of the billing view. The <code>BillingViewArn</code> is needed to create Amazon Web Services Cost and Usage Report for each billing group maintained in the Amazon Web Services Billing Conductor service. The <code>BillingViewArn</code> for a billing gr
    
    pub fn build(self) -> ::std::result::Result<crate::types::ReportDefinition, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::ReportDefinition {
            report_name: self.report_name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "report_name",
                    "report_name was not specified but it is required when building ReportDefinition",
                )
            })?,
            time_unit: self.time_unit.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "time_unit",
                    "time_unit was not specified but it is required when building ReportDefinition",
                )
            })?,
            format: self.format.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "format",
                    "format was not specified but it is required when building ReportDefinition",
                )
            })?,
            compression: self.compression.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "compression",
                    "compression was not specified but it is required when building ReportDefinition",
                )
            })?,
            additional_schema_elements: self.additional_schema_elements.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "additional_schema_elements",
                    "additional_schema_elements was not specified but it is required when building ReportDefinition",
                )
            })?,
            s3_bucket: self.s3_bucket.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "s3_bucket",
                    "s3_bucket was not specified but it is required when building ReportDefinition",
                )
            })?,
            s3_prefix: self.s3_prefix.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "s3_prefix",
                    "s3_prefix was not specified but it is required when building ReportDefinition",
                )
            })?,
            s3_region: self.s3_region.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "s3_region",
                    "s3_region was not specified but it is required when building ReportDefinition",
                )
            })?,
            additional_artifacts: self.additional_artifacts,
            refresh_closed_reports: self.refresh_closed_reports,
            report_versioning: self.report_versioning,
            billing_view_arn: self.billing_view_arn,
            report_status: self.report_status,
        })
    }