1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
// THIS IS A GENERATED FILE
// If anything in this file needs to be updated, it needs to be fixed in reso_dd_generator
use serde::{Deserialize, Serialize};

/// [GreenWaterConservation Lookups](https://ddwiki.reso.org/display/DDW17/GreenWaterConservation+Lookups)
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum GreenWaterConservation {
    /// "[Efficient Hot Water Distribution](https://ddwiki.reso.org/display/DDW17/Efficient+Hot+Water+Distribution)": Efficient hot water distribution systems are designed to generate hot water using fewer fuel resources, and to get hot water to low-flow faucets and fixtures more quickly. These systems often feature carefully designed plumbing lines that are less redundant and/or shorter. Rather than measuring time to hot water at a fixture in gallons, efficient distribution systems can be measured in cups. EPA WaterSense Guide for Hot Water Distribution as well as several green building programs have further details. This may also be known as Structured Plumbing.
    EfficientHotWaterDistribution,

    /// "[Gray Water System](https://ddwiki.reso.org/display/DDW17/Gray+Water+System)": The property includes a grey water system.
    GrayWaterSystem,

    /// "[Green Infrastructure](https://ddwiki.reso.org/display/DDW17/Green+Infrastructure)": Green Infrastructure is a set of strategies and specifically designed systems to manage stormwater runoff through a variety of small, cost-effective landscape features located on a property. Green Infrastructure employs infiltration (allowing water to slowly sink into the soil), evaporation/transpiration using native vegetation, and rainwater capture and reuse (storing runoff to water plants, flush toilets, etc.). May include green roof, rain gardens, rain barrels, permeable paving, etc. EPA Green Infrastructure webpage has more information
    GreenInfrastructure,

    /// "[Low-Flow Fixtures](https://ddwiki.reso.org/display/DDW17/Low-Flow+Fixtures)": Toilets, bathroom faucets, showerheads, irrigation controllers, and other products can be manufactured to use less water than minimum standards. Some products are qualified by third-party programs like the EPA WaterSense and are typically at least 20 percent more water-efficient than standard products. EPA WaterSense website has additional information
    LowFlowFixtures,

    /// "[Water Recycling](https://ddwiki.reso.org/display/DDW17/Water+Recycling)": The property includes a system to reuse stormwater via rain barrels or cisterns for landscaping, or to treat and reuse water from bathroom sinks, showers, and clothes washing drains for landscape irrigation and/or toilet flushing.
    WaterRecycling,

    /// "[Water-Smart Landscaping](https://ddwiki.reso.org/display/DDW17/Water-Smart+Landscaping)": Water-smart landscapes are designed to require less water and fertilizer treatments. These landscapes feature regionally appropriate plants that require low water and are native to the local climate. Plants are organized by hydrozones (watering needs). Any irrigation system is qualified for high water-efficiency. Turfgrass is minimized and grown to the tallest height recommended. Strategic maintenance includes mulching and soil aeration. Other details are documented in EPA’s Water-Smart Landscape Design Tips.
    WaterSmartLandscaping,

    /// A value that was not defined by the enumeration
    OpenEnumeration(String),
}

impl crate::ResoEnumeration for GreenWaterConservation {
    fn from_str(s: &str) -> GreenWaterConservation {
        match s {
            "Efficient Hot Water Distribution" => {
                GreenWaterConservation::EfficientHotWaterDistribution
            }

            "Gray Water System" => GreenWaterConservation::GrayWaterSystem,

            "Green Infrastructure" => GreenWaterConservation::GreenInfrastructure,

            "Low-Flow Fixtures" => GreenWaterConservation::LowFlowFixtures,

            "Water Recycling" => GreenWaterConservation::WaterRecycling,

            "Water-Smart Landscaping" => GreenWaterConservation::WaterSmartLandscaping,

            _ => GreenWaterConservation::OpenEnumeration(s.into()),
        }
    }

    fn from_string(s: String) -> GreenWaterConservation {
        match s.as_ref() {
            "Efficient Hot Water Distribution" => {
                GreenWaterConservation::EfficientHotWaterDistribution
            }

            "Gray Water System" => GreenWaterConservation::GrayWaterSystem,

            "Green Infrastructure" => GreenWaterConservation::GreenInfrastructure,

            "Low-Flow Fixtures" => GreenWaterConservation::LowFlowFixtures,

            "Water Recycling" => GreenWaterConservation::WaterRecycling,

            "Water-Smart Landscaping" => GreenWaterConservation::WaterSmartLandscaping,

            _ => GreenWaterConservation::OpenEnumeration(s),
        }
    }

    fn to_str(&self) -> &str {
        match self {
            GreenWaterConservation::EfficientHotWaterDistribution => {
                "Efficient Hot Water Distribution"
            }

            GreenWaterConservation::GrayWaterSystem => "Gray Water System",

            GreenWaterConservation::GreenInfrastructure => "Green Infrastructure",

            GreenWaterConservation::LowFlowFixtures => "Low-Flow Fixtures",

            GreenWaterConservation::WaterRecycling => "Water Recycling",

            GreenWaterConservation::WaterSmartLandscaping => "Water-Smart Landscaping",

            GreenWaterConservation::OpenEnumeration(ref s) => s,
        }
    }

    fn into_string(self) -> String {
        match self {
            GreenWaterConservation::EfficientHotWaterDistribution => {
                "Efficient Hot Water Distribution".into()
            }

            GreenWaterConservation::GrayWaterSystem => "Gray Water System".into(),

            GreenWaterConservation::GreenInfrastructure => "Green Infrastructure".into(),

            GreenWaterConservation::LowFlowFixtures => "Low-Flow Fixtures".into(),

            GreenWaterConservation::WaterRecycling => "Water Recycling".into(),

            GreenWaterConservation::WaterSmartLandscaping => "Water-Smart Landscaping".into(),

            GreenWaterConservation::OpenEnumeration(s) => s,
        }
    }

    fn fallback_value(&self) -> Option<&str> {
        match self {
            GreenWaterConservation::OpenEnumeration(ref s) => Some(s),
            _ => None,
        }
    }
}

impl From<String> for GreenWaterConservation {
    fn from(s: String) -> GreenWaterConservation {
        match s.as_ref() {
            "Efficient Hot Water Distribution" => {
                GreenWaterConservation::EfficientHotWaterDistribution
            }

            "Gray Water System" => GreenWaterConservation::GrayWaterSystem,

            "Green Infrastructure" => GreenWaterConservation::GreenInfrastructure,

            "Low-Flow Fixtures" => GreenWaterConservation::LowFlowFixtures,

            "Water Recycling" => GreenWaterConservation::WaterRecycling,

            "Water-Smart Landscaping" => GreenWaterConservation::WaterSmartLandscaping,

            _ => GreenWaterConservation::OpenEnumeration(s),
        }
    }
}

impl From<&str> for GreenWaterConservation {
    fn from(s: &str) -> GreenWaterConservation {
        match s {
            "Efficient Hot Water Distribution" => {
                GreenWaterConservation::EfficientHotWaterDistribution
            }

            "Gray Water System" => GreenWaterConservation::GrayWaterSystem,

            "Green Infrastructure" => GreenWaterConservation::GreenInfrastructure,

            "Low-Flow Fixtures" => GreenWaterConservation::LowFlowFixtures,

            "Water Recycling" => GreenWaterConservation::WaterRecycling,

            "Water-Smart Landscaping" => GreenWaterConservation::WaterSmartLandscaping,

            _ => GreenWaterConservation::OpenEnumeration(s.into()),
        }
    }
}

impl<'a> From<&'a GreenWaterConservation> for &'a str {
    fn from(s: &'a GreenWaterConservation) -> &'a str {
        match s {
            GreenWaterConservation::EfficientHotWaterDistribution => {
                "Efficient Hot Water Distribution"
            }

            GreenWaterConservation::GrayWaterSystem => "Gray Water System",

            GreenWaterConservation::GreenInfrastructure => "Green Infrastructure",

            GreenWaterConservation::LowFlowFixtures => "Low-Flow Fixtures",

            GreenWaterConservation::WaterRecycling => "Water Recycling",

            GreenWaterConservation::WaterSmartLandscaping => "Water-Smart Landscaping",

            GreenWaterConservation::OpenEnumeration(s) => s,
        }
    }
}

impl Serialize for GreenWaterConservation {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: serde::Serializer,
    {
        serializer.serialize_str(self.into())
    }
}

impl<'de> Deserialize<'de> for GreenWaterConservation {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: serde::Deserializer<'de>,
    {
        let s = String::deserialize(deserializer)?;
        Ok(From::from(s))
    }
}