bufkit_data/site/state_prov.rs
1use strum_macros::{EnumIter, EnumString, IntoStaticStr};
2
3/// State/Providence abreviations for declaring a state in the site.
4#[derive(Debug, Hash, Clone, Copy, PartialEq, Eq, EnumString, IntoStaticStr, EnumIter)]
5#[allow(missing_docs)]
6pub enum StateProv {
7 AL, // Alabama
8 AK, // Alaska
9 AZ, // Arizona
10 AR, // Arkansas
11 CA, // California
12 CO, // Colorado
13 CT, // Connecticut
14 DE, // Delaware
15 FL, // Florida
16 GA, // Georgia
17 HI, // Hawaii
18 ID, // Idaho
19 IL, // Illinois
20 IN, // Indiana
21 IA, // Iowa
22 KS, // Kansas
23 KY, // Kentucky
24 LA, // Louisiana
25 ME, // Maine
26 MD, // Maryland
27 MA, // Massachussetts
28 MI, // Michigan
29 MN, // Minnesota
30 MS, // Mississippi
31 MO, // Missouri
32 MT, // Montana
33 NE, // Nebraska
34 NV, // Nevada
35 NH, // New Hampshire
36 NJ, // New Jersey
37 NM, // New Mexico
38 NY, // New York
39 NC, // North Carolina
40 ND, // North Dakota
41 OH, // Ohio
42 OK, // Oklahoma
43 OR, // Oregon
44 PA, // Pensylvania
45 RI, // Rhode Island
46 SC, // South Carolina
47 SD, // South Dakota
48 TN, // Tennessee
49 TX, // Texas
50 UT, // Utah
51 VT, // Vermont
52 VA, // Virginia
53 WA, // Washington
54 WV, // West Virginia
55 WI, // Wisconsin
56 WY, // Wyoming
57 // US Commonwealth and Territories
58 AS, // American Samoa
59 DC, // District of Columbia
60 FM, // Federated States of Micronesia
61 MH, // Marshall Islands
62 MP, // Northern Mariana Islands
63 PW, // Palau
64 PR, // Puerto Rico
65 VI, // Virgin Islands
66}
67
68impl StateProv {
69 /// Get a static string representation.
70 pub fn as_static_str(self) -> &'static str {
71 self.into()
72 }
73}
74
75/*--------------------------------------------------------------------------------------------------
76 Unit Tests
77--------------------------------------------------------------------------------------------------*/
78#[cfg(test)]
79mod unit {
80 use super::*;
81
82 use std::str::FromStr;
83 use strum::IntoEnumIterator;
84
85 #[test]
86 fn test_to_string_for_state_prov() {
87 assert_eq!(StateProv::AL.as_static_str(), "AL");
88 }
89
90 #[test]
91 fn test_from_string_for_state_prov() {
92 assert_eq!(StateProv::from_str("AL").unwrap(), StateProv::AL);
93 }
94
95 #[test]
96 fn round_trip_strings_for_state_prov() {
97 for state_prov in StateProv::iter() {
98 assert_eq!(
99 StateProv::from_str(state_prov.as_static_str()).unwrap(),
100 state_prov
101 );
102 }
103 }
104}