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: _cache_cluster.rs
    path of file: ./repos/aws-sdk-rust/sdk/elasticache/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>Contains all of the attributes of a specific cluster.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct CacheCluster {
    /// <p>The user-supplied identifier of the cluster. This identifier is a unique key that identifies a cluster.</p>
    pub cache_cluster_id: ::std::option::Option<::std::string::String>,
    /// <p>Represents a Memcached cluster endpoint which can be used by an application to connect to any node in the cluster. The configuration endpoint will always have <code>.cfg</code> in it.</p>
    /// <p>Example: <code>mem-3.9dvc4r<u>.cfg</u>.usw2.cache.amazonaws.com:11211</code></p>
    pub configuration_endpoint: ::std::option::Option<crate::types::Endpoint>,
    /// <p>The URL of the web page where you can download the latest ElastiCache client library.</p>
    pub client_download_landing_page: ::std::option::Option<::std::string::String>,
    /// <p>The name of the compute and memory capacity node type for the cluster.</p>
    /// <p>The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.</p>
    /// <ul>
    /// <li>
    /// <p>General purpose:</p>
    /// <ul>
    /// <li>
    /// <p>Current generation:</p>
    /// <p><b>M7g node types</b>: <code>cache.m7g.large</code>, <code>cache.m7g.xlarge</code>, <code>cache.m7g.2xlarge</code>, <code>cache.m7g.4xlarge</code>, <code>cache.m7g.8xlarge</code>, <code>cache.m7g.12xlarge</code>, <code>cache.m7g.16xlarge</code></p><note>
    /// <p>For region availability, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion">Supported Node Types</a></p>
    /// </note>
    /// <p><b>M6g node types</b> (
    
    pub fn build(self) -> crate::types::CacheCluster {
        crate::types::CacheCluster {
            cache_cluster_id: self.cache_cluster_id,
            configuration_endpoint: self.configuration_endpoint,
            client_download_landing_page: self.client_download_landing_page,
            cache_node_type: self.cache_node_type,
            engine: self.engine,
            engine_version: self.engine_version,
            cache_cluster_status: self.cache_cluster_status,
            num_cache_nodes: self.num_cache_nodes,
            preferred_availability_zone: self.preferred_availability_zone,
            preferred_outpost_arn: self.preferred_outpost_arn,
            cache_cluster_create_time: self.cache_cluster_create_time,
            preferred_maintenance_window: self.preferred_maintenance_window,
            pending_modified_values: self.pending_modified_values,
            notification_configuration: self.notification_configuration,
            cache_security_groups: self.cache_security_groups,
            cache_parameter_group: self.cache_parameter_group,
            cache_subnet_group_name: self.cache_subnet_group_name,
            cache_nodes: self.cache_nodes,
            auto_minor_version_upgrade: self.auto_minor_version_upgrade,
            security_groups: self.security_groups,
            replication_group_id: self.replication_group_id,
            snapshot_retention_limit: self.snapshot_retention_limit,
            snapshot_window: self.snapshot_window,
            auth_token_enabled: self.auth_token_enabled,
            auth_token_last_modified_date: self.auth_token_last_modified_date,
            transit_encryption_enabled: self.transit_encryption_enabled,
            at_rest_encryption_enabled: self.at_rest_encryption_enabled,
            arn: self.arn,
            replication_group_log_delivery_enabled: self.replication_group_log_delivery_enabled,
            log_delivery_configurations: self.log_delivery_configurations,
            network_type: self.network_type,
            ip_discovery: self.ip_discovery,
            transit_encryption_mode: self.transit_encryption_mode,
        }
    }