1use serde::{Deserialize, Serialize};
2use strum::{Display, EnumIter, EnumString, IntoStaticStr};
3
4#[derive(
5 Debug,
6 Clone,
7 Copy,
8 Serialize,
9 Deserialize,
10 EnumString,
11 Display,
12 IntoStaticStr,
13 EnumIter,
14 PartialEq,
15 Eq,
16 Hash,
17)]
18#[strum(serialize_all = "UPPERCASE")]
19#[serde(rename_all = "UPPERCASE")]
20pub enum CountryCode {
21 AD,
22 AE,
23 AF,
24 AL,
25 AM,
26 AO,
27 AR,
28 AS,
29 AT,
30 AU,
31 AZ,
32 BA,
33 BD,
34 BE,
35 BF,
36 BG,
37 BH,
38 BI,
39 BJ,
40 BN,
41 BO,
42 BR,
43 BS,
44 BT,
45 BW,
46 BY,
47 BZ,
48 CA,
49 CD,
50 CF,
51 CG,
52 CH,
53 CI,
54 CL,
55 CM,
56 CN,
57 CO,
58 CR,
59 CU,
60 CV,
61 CY,
62 CZ,
63 DE,
64 DJ,
65 DK,
66 DM,
67 DO,
68 DZ,
69 EC,
70 EE,
71 EG,
72 EH,
73 ER,
74 ES,
75 ET,
76 FI,
77 FJ,
78 FM,
79 FR,
80 GA,
81 GB,
82 GD,
83 GE,
84 GH,
85 GM,
86 GN,
87 GQ,
88 GR,
89 GT,
90 GW,
91 GY,
92 HK,
93 HN,
94 HR,
95 HT,
96 HU,
97 ID,
98 IE,
99 IL,
100 IN,
101 IQ,
102 IR,
103 IS,
104 IT,
105 JM,
106 JO,
107 JP,
108 KE,
109 KG,
110 KH,
111 KI,
112 KM,
113 KN,
114 KR,
115 KW,
116 KZ,
117 LA,
118 LB,
119 LC,
120 LK,
121 LR,
122 LS,
123 LT,
124 LU,
125 LV,
126 LY,
127 MA,
128 MC,
129 MD,
130 ME,
131 MG,
132 MH,
133 MK,
134 ML,
135 MM,
136 MN,
137 MO,
138 MR,
139 MT,
140 MU,
141 MV,
142 MW,
143 MX,
144 MY,
145 MZ,
146 NA,
147 NE,
148 NG,
149 NI,
150 NL,
151 NO,
152 NP,
153 NR,
154 NU,
155 NZ,
156 OM,
157 PA,
158 PE,
159 PG,
160 PH,
161 PK,
162 PL,
163 PR,
164 PS,
165 PT,
166 PW,
167 PY,
168 QA,
169 RE,
170 RO,
171 RS,
172 RU,
173 RW,
174 SA,
175 SB,
176 SC,
177 SD,
178 SE,
179 SG,
180 SI,
181 SK,
182 SL,
183 SM,
184 SN,
185 SO,
186 SR,
187 SS,
188 ST,
189 SV,
190 SY,
191 SZ,
192 TD,
193 TG,
194 TH,
195 TJ,
196 TL,
197 TM,
198 TN,
199 TO,
200 TR,
201 TT,
202 TV,
203 TZ,
204 UA,
205 UG,
206 US,
207 UY,
208 UZ,
209 VC,
210 VE,
211 VN,
212 VU,
213 WS,
214 YE,
215 YT,
216 ZA,
217 ZM,
218 ZW,
219}
220
221#[test]
222fn test_country_code_serialization() {
223 let json = r#""US""#;
224 let code: CountryCode = serde_json::from_str(json).expect("Failed to deserialize");
225 assert_eq!(code, CountryCode::US);
226 assert_eq!(code.to_string().to_lowercase(), "us");
227}