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: _environment_template.rs
    path of file: ./repos/aws-sdk-rust/sdk/proton/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 environment template data.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
pub struct EnvironmentTemplate {
    /// <p>The name of the environment template.</p>
    pub name: ::std::string::String,
    /// <p>The Amazon Resource Name (ARN) of the environment template.</p>
    pub arn: ::std::string::String,
    /// <p>The time when the environment template was created.</p>
    pub created_at: ::aws_smithy_types::DateTime,
    /// <p>The time when the environment template was last modified.</p>
    pub last_modified_at: ::aws_smithy_types::DateTime,
    /// <p>The name of the environment template as displayed in the developer interface.</p>
    pub display_name: ::std::option::Option<::std::string::String>,
    /// <p>A description of the environment template.</p>
    pub description: ::std::option::Option<::std::string::String>,
    /// <p>The ID of the recommended version of the environment template.</p>
    pub recommended_version: ::std::option::Option<::std::string::String>,
    /// <p>The customer provided encryption key for the environment template.</p>
    pub encryption_key: ::std::option::Option<::std::string::String>,
    /// <p>When included, indicates that the environment template is for customer provisioned and managed infrastructur
    
    pub fn build(self) -> ::std::result::Result<crate::types::EnvironmentTemplate, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::EnvironmentTemplate {
            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 EnvironmentTemplate",
                )
            })?,
            arn: self.arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "arn",
                    "arn was not specified but it is required when building EnvironmentTemplate",
                )
            })?,
            created_at: self.created_at.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "created_at",
                    "created_at was not specified but it is required when building EnvironmentTemplate",
                )
            })?,
            last_modified_at: self.last_modified_at.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "last_modified_at",
                    "last_modified_at was not specified but it is required when building EnvironmentTemplate",
                )
            })?,
            display_name: self.display_name,
            description: self.description,
            recommended_version: self.recommended_version,
            encryption_key: self.encryption_key,
            provisioning: self.provisioning,
        })
    }