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: _scaling_plan.rs
    path of file: ./repos/aws-sdk-rust/sdk/autoscalingplans/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>Represents a scaling plan.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct ScalingPlan {
    /// <p>The name of the scaling plan.</p>
    pub scaling_plan_name: ::std::string::String,
    /// <p>The version number of the scaling plan.</p>
    pub scaling_plan_version: i64,
    /// <p>A CloudFormation stack or a set of tags. You can create one scaling plan per application source.</p>
    pub application_source: ::std::option::Option<crate::types::ApplicationSource>,
    /// <p>The scaling instructions.</p>
    pub scaling_instructions: ::std::vec::Vec<crate::types::ScalingInstruction>,
    /// <p>The status of the scaling plan.</p>
    /// <ul>
    /// <li>
    /// <p><code>Active</code> - The scaling plan is active.</p></li>
    /// <li>
    /// <p><code>ActiveWithProblems</code> - The scaling plan is active, but the scaling configuration for one or more resources could not be applied.</p></li>
    /// <li>
    /// <p><code>CreationInProgress</code> - The scaling plan is being created.</p></li>
    /// <li>
    /// <p><code>CreationFailed</code> - The scaling plan could not be created.</p></li>
    /// <li>
    /// <p><code>DeletionInProgress</code> - The scaling plan is being deleted.</p></li>
    /// <li>
    /// <p><code>DeletionFailed</code> - The scaling plan could not be deleted.</p></li>
    /// <li>
    /// <p><code>UpdateInProgress</code> - The scaling plan is being updated.</p></li>
    ///
    
    pub fn build(self) -> ::std::result::Result<crate::types::ScalingPlan, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::ScalingPlan {
            scaling_plan_name: self.scaling_plan_name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "scaling_plan_name",
                    "scaling_plan_name was not specified but it is required when building ScalingPlan",
                )
            })?,
            scaling_plan_version: self.scaling_plan_version.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "scaling_plan_version",
                    "scaling_plan_version was not specified but it is required when building ScalingPlan",
                )
            })?,
            application_source: self.application_source,
            scaling_instructions: self.scaling_instructions.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "scaling_instructions",
                    "scaling_instructions was not specified but it is required when building ScalingPlan",
                )
            })?,
            status_code: self.status_code.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "status_code",
                    "status_code was not specified but it is required when building ScalingPlan",
                )
            })?,
            status_message: self.status_message,
            status_start_time: self.status_start_time,
            creation_time: self.creation_time,
        })
    }