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: _contact_channel.rs
    path of file: ./repos/aws-sdk-rust/sdk/ssmcontacts/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 method that Incident Manager uses to engage a contact.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct ContactChannel {
    /// <p>The Amazon Resource Name (ARN) of the contact channel.</p>
    pub contact_channel_arn: ::std::string::String,
    /// <p>The ARN of the contact that contains the contact channel.</p>
    pub contact_arn: ::std::string::String,
    /// <p>The name of the contact channel.</p>
    pub name: ::std::string::String,
    /// <p>The type of the contact channel. Incident Manager supports three contact methods:</p>
    /// <ul>
    /// <li>
    /// <p>SMS</p></li>
    /// <li>
    /// <p>VOICE</p></li>
    /// <li>
    /// <p>EMAIL</p></li>
    /// </ul>
    pub r#type: ::std::option::Option<crate::types::ChannelType>,
    /// <p>The details that Incident Manager uses when trying to engage the contact channel.</p>
    pub delivery_address: ::std::option::Option<crate::types::ContactChannelAddress>,
    /// <p>A Boolean value describing if the contact channel has been activated or not. If the contact channel isn't activated, Incident Manager can't engage the contact through it.</p>
    pub activation_status: crate::types::ActivationStatus,
}
impl ContactChannel {
    /// <p>The Amazon Resource Name (ARN) of the contact channel.</p>
    pub fn contact_channel_arn(&self) -> &str {
        use std::ops::Deref;
        self.co
    
    pub fn build(self) -> ::std::result::Result<crate::types::ContactChannel, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::ContactChannel {
            contact_channel_arn: self.contact_channel_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "contact_channel_arn",
                    "contact_channel_arn was not specified but it is required when building ContactChannel",
                )
            })?,
            contact_arn: self.contact_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "contact_arn",
                    "contact_arn was not specified but it is required when building ContactChannel",
                )
            })?,
            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 ContactChannel",
                )
            })?,
            r#type: self.r#type,
            delivery_address: self.delivery_address,
            activation_status: self.activation_status.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "activation_status",
                    "activation_status was not specified but it is required when building ContactChannel",
                )
            })?,
        })
    }