1use std::collections::HashMap;
5
6#[test]
7fn find_iso_3166_test() {
8 assert_eq!("US",find_iso_3166("12069359290"));
9 assert_eq!("", find_iso_3166("12229359290"));
10 assert_eq!("UZ", find_iso_3166("99893592902"));
11 assert_eq!("YT", find_iso_3166("26226992902"));
12}
13
14#[test]
15fn find_phone_cc_test() {
16 assert_eq!("1", find_phone_cc("US"));
17 assert_eq!("", find_phone_cc("ZZ"));
18}
19
20pub fn find_iso_3166(phone:&str) -> &'static str {
21 let mut phone_prefix = HashMap::new();
22 phone_prefix.insert(1201, "US");
23 phone_prefix.insert(1202, "US");
24 phone_prefix.insert(1203, "US");
25 phone_prefix.insert(1204, "CA");
26 phone_prefix.insert(1205, "US");
27 phone_prefix.insert(1206, "US");
28 phone_prefix.insert(1207, "US");
29 phone_prefix.insert(1208, "US");
30 phone_prefix.insert(1209, "US");
31 phone_prefix.insert(1210, "US");
32 phone_prefix.insert(1212, "US");
33 phone_prefix.insert(1213, "US");
34 phone_prefix.insert(1214, "US");
35 phone_prefix.insert(1215, "US");
36 phone_prefix.insert(1216, "US");
37 phone_prefix.insert(1217, "US");
38 phone_prefix.insert(1218, "US");
39 phone_prefix.insert(1219, "US");
40 phone_prefix.insert(1224, "US");
41 phone_prefix.insert(1225, "US");
42 phone_prefix.insert(1226, "CA");
43 phone_prefix.insert(1228, "US");
44 phone_prefix.insert(1229, "US");
45 phone_prefix.insert(1231, "US");
46 phone_prefix.insert(1234, "US");
47 phone_prefix.insert(1236, "CA");
48 phone_prefix.insert(1239, "US");
49 phone_prefix.insert(1240, "US");
50 phone_prefix.insert(1242, "BS");
51 phone_prefix.insert(1246, "BB");
52 phone_prefix.insert(1248, "US");
53 phone_prefix.insert(1249, "CA");
54 phone_prefix.insert(1250, "CA");
55 phone_prefix.insert(1251, "US");
56 phone_prefix.insert(1252, "US");
57 phone_prefix.insert(1253, "US");
58 phone_prefix.insert(1254, "US");
59 phone_prefix.insert(1256, "US");
60 phone_prefix.insert(1260, "US");
61 phone_prefix.insert(1262, "US");
62 phone_prefix.insert(1264, "AI");
63 phone_prefix.insert(1267, "US");
64 phone_prefix.insert(1268, "AG");
65 phone_prefix.insert(1269, "US");
66 phone_prefix.insert(1270, "US");
67 phone_prefix.insert(1272, "US");
68 phone_prefix.insert(1274, "US");
69 phone_prefix.insert(1276, "US");
70 phone_prefix.insert(1281, "US");
71 phone_prefix.insert(1284, "VG");
72 phone_prefix.insert(1289, "CA");
73 phone_prefix.insert(1301, "US");
74 phone_prefix.insert(1302, "US");
75 phone_prefix.insert(1303, "US");
76 phone_prefix.insert(1304, "US");
77 phone_prefix.insert(1305, "US");
78 phone_prefix.insert(1306, "CA");
79 phone_prefix.insert(1307, "US");
80 phone_prefix.insert(1308, "US");
81 phone_prefix.insert(1309, "US");
82 phone_prefix.insert(1310, "US");
83 phone_prefix.insert(1312, "US");
84 phone_prefix.insert(1313, "US");
85 phone_prefix.insert(1314, "US");
86 phone_prefix.insert(1315, "US");
87 phone_prefix.insert(1316, "US");
88 phone_prefix.insert(1317, "US");
89 phone_prefix.insert(1318, "US");
90 phone_prefix.insert(1319, "US");
91 phone_prefix.insert(1320, "US");
92 phone_prefix.insert(1321, "US");
93 phone_prefix.insert(1323, "US");
94 phone_prefix.insert(1325, "US");
95 phone_prefix.insert(1330, "US");
96 phone_prefix.insert(1331, "US");
97 phone_prefix.insert(1334, "US");
98 phone_prefix.insert(1336, "US");
99 phone_prefix.insert(1337, "US");
100 phone_prefix.insert(1339, "US");
101 phone_prefix.insert(1340, "VI");
102 phone_prefix.insert(1343, "CA");
103 phone_prefix.insert(1345, "KY");
104 phone_prefix.insert(1346, "US");
105 phone_prefix.insert(1347, "US");
106 phone_prefix.insert(1351, "US");
107 phone_prefix.insert(1352, "US");
108 phone_prefix.insert(1360, "US");
109 phone_prefix.insert(1361, "US");
110 phone_prefix.insert(1364, "US");
111 phone_prefix.insert(1365, "CA");
112 phone_prefix.insert(1385, "US");
113 phone_prefix.insert(1386, "US");
114 phone_prefix.insert(1401, "US");
115 phone_prefix.insert(1402, "US");
116 phone_prefix.insert(1403, "CA");
117 phone_prefix.insert(1404, "US");
118 phone_prefix.insert(1405, "US");
119 phone_prefix.insert(1406, "US");
120 phone_prefix.insert(1407, "US");
121 phone_prefix.insert(1408, "US");
122 phone_prefix.insert(1409, "US");
123 phone_prefix.insert(1410, "US");
124 phone_prefix.insert(1412, "US");
125 phone_prefix.insert(1413, "US");
126 phone_prefix.insert(1414, "US");
127 phone_prefix.insert(1415, "US");
128 phone_prefix.insert(1416, "CA");
129 phone_prefix.insert(1417, "US");
130 phone_prefix.insert(1418, "CA");
131 phone_prefix.insert(1419, "US");
132 phone_prefix.insert(1423, "US");
133 phone_prefix.insert(1424, "US");
134 phone_prefix.insert(1425, "US");
135 phone_prefix.insert(1430, "US");
136 phone_prefix.insert(1431, "CA");
137 phone_prefix.insert(1432, "US");
138 phone_prefix.insert(1434, "US");
139 phone_prefix.insert(1435, "US");
140 phone_prefix.insert(1437, "CA");
141 phone_prefix.insert(1438, "CA");
142 phone_prefix.insert(1440, "US");
143 phone_prefix.insert(1441, "BM");
144 phone_prefix.insert(1442, "US");
145 phone_prefix.insert(1443, "US");
146 phone_prefix.insert(1450, "CA");
147 phone_prefix.insert(1457, "CA");
148 phone_prefix.insert(1458, "US");
149 phone_prefix.insert(1469, "US");
150 phone_prefix.insert(1470, "US");
151 phone_prefix.insert(1473, "GD");
152 phone_prefix.insert(1475, "US");
153 phone_prefix.insert(1478, "US");
154 phone_prefix.insert(1479, "US");
155 phone_prefix.insert(1480, "US");
156 phone_prefix.insert(1484, "US");
157 phone_prefix.insert(1500, "US");
158 phone_prefix.insert(1501, "US");
159 phone_prefix.insert(1502, "US");
160 phone_prefix.insert(1503, "US");
161 phone_prefix.insert(1504, "US");
162 phone_prefix.insert(1505, "US");
163 phone_prefix.insert(1506, "CA");
164 phone_prefix.insert(1507, "US");
165 phone_prefix.insert(1508, "US");
166 phone_prefix.insert(1509, "US");
167 phone_prefix.insert(1510, "US");
168 phone_prefix.insert(1512, "US");
169 phone_prefix.insert(1513, "US");
170 phone_prefix.insert(1514, "CA");
171 phone_prefix.insert(1515, "US");
172 phone_prefix.insert(1516, "US");
173 phone_prefix.insert(1517, "US");
174 phone_prefix.insert(1518, "US");
175 phone_prefix.insert(1519, "CA");
176 phone_prefix.insert(1520, "US");
177 phone_prefix.insert(1530, "US");
178 phone_prefix.insert(1531, "US");
179 phone_prefix.insert(1533, "US");
180 phone_prefix.insert(1534, "US");
181 phone_prefix.insert(1539, "US");
182 phone_prefix.insert(1540, "US");
183 phone_prefix.insert(1541, "US");
184 phone_prefix.insert(1544, "US");
185 phone_prefix.insert(1551, "US");
186 phone_prefix.insert(1559, "US");
187 phone_prefix.insert(1561, "US");
188 phone_prefix.insert(1562, "US");
189 phone_prefix.insert(1563, "US");
190 phone_prefix.insert(1566, "US");
191 phone_prefix.insert(1567, "US");
192 phone_prefix.insert(1570, "US");
193 phone_prefix.insert(1571, "US");
194 phone_prefix.insert(1573, "US");
195 phone_prefix.insert(1574, "US");
196 phone_prefix.insert(1575, "US");
197 phone_prefix.insert(1577, "US");
198 phone_prefix.insert(1579, "CA");
199 phone_prefix.insert(1580, "US");
200 phone_prefix.insert(1581, "CA");
201 phone_prefix.insert(1585, "US");
202 phone_prefix.insert(1586, "US");
203 phone_prefix.insert(1587, "CA");
204 phone_prefix.insert(1600, "CA");
205 phone_prefix.insert(1601, "US");
206 phone_prefix.insert(1602, "US");
207 phone_prefix.insert(1603, "US");
208 phone_prefix.insert(1604, "CA");
209 phone_prefix.insert(1605, "US");
210 phone_prefix.insert(1606, "US");
211 phone_prefix.insert(1607, "US");
212 phone_prefix.insert(1608, "US");
213 phone_prefix.insert(1609, "US");
214 phone_prefix.insert(1610, "US");
215 phone_prefix.insert(1612, "US");
216 phone_prefix.insert(1613, "CA");
217 phone_prefix.insert(1614, "US");
218 phone_prefix.insert(1615, "US");
219 phone_prefix.insert(1616, "US");
220 phone_prefix.insert(1617, "US");
221 phone_prefix.insert(1618, "US");
222 phone_prefix.insert(1619, "US");
223 phone_prefix.insert(1620, "US");
224 phone_prefix.insert(1623, "US");
225 phone_prefix.insert(1626, "US");
226 phone_prefix.insert(1628, "US");
227 phone_prefix.insert(1629, "US");
228 phone_prefix.insert(1630, "US");
229 phone_prefix.insert(1631, "US");
230 phone_prefix.insert(1636, "US");
231 phone_prefix.insert(1639, "CA");
232 phone_prefix.insert(1641, "US");
233 phone_prefix.insert(1646, "US");
234 phone_prefix.insert(1647, "CA");
235 phone_prefix.insert(1649, "TC");
236 phone_prefix.insert(1650, "US");
237 phone_prefix.insert(1651, "US");
238 phone_prefix.insert(1657, "US");
239 phone_prefix.insert(1660, "US");
240 phone_prefix.insert(1661, "US");
241 phone_prefix.insert(1662, "US");
242 phone_prefix.insert(1664, "MS");
243 phone_prefix.insert(1667, "US");
244 phone_prefix.insert(1669, "US");
245 phone_prefix.insert(1670, "MP");
246 phone_prefix.insert(1671, "GU");
247 phone_prefix.insert(1678, "US");
248 phone_prefix.insert(1681, "US");
249 phone_prefix.insert(1682, "US");
250 phone_prefix.insert(1684, "AS");
251 phone_prefix.insert(1700, "US");
252 phone_prefix.insert(1701, "US");
253 phone_prefix.insert(1702, "US");
254 phone_prefix.insert(1703, "US");
255 phone_prefix.insert(1704, "US");
256 phone_prefix.insert(1705, "CA");
257 phone_prefix.insert(1706, "US");
258 phone_prefix.insert(1707, "US");
259 phone_prefix.insert(1708, "US");
260 phone_prefix.insert(1709, "CA");
261 phone_prefix.insert(1710, "US");
262 phone_prefix.insert(1712, "US");
263 phone_prefix.insert(1713, "US");
264 phone_prefix.insert(1714, "US");
265 phone_prefix.insert(1715, "US");
266 phone_prefix.insert(1716, "US");
267 phone_prefix.insert(1717, "US");
268 phone_prefix.insert(1718, "US");
269 phone_prefix.insert(1719, "US");
270 phone_prefix.insert(1720, "US");
271 phone_prefix.insert(1721, "SX");
272 phone_prefix.insert(1724, "US");
273 phone_prefix.insert(1725, "US");
274 phone_prefix.insert(1727, "US");
275 phone_prefix.insert(1731, "US");
276 phone_prefix.insert(1732, "US");
277 phone_prefix.insert(1734, "US");
278 phone_prefix.insert(1737, "US");
279 phone_prefix.insert(1740, "US");
280 phone_prefix.insert(1747, "US");
281 phone_prefix.insert(1754, "US");
282 phone_prefix.insert(1757, "US");
283 phone_prefix.insert(1758, "LC");
284 phone_prefix.insert(1760, "US");
285 phone_prefix.insert(1762, "US");
286 phone_prefix.insert(1763, "US");
287 phone_prefix.insert(1765, "US");
288 phone_prefix.insert(1767, "DM");
289 phone_prefix.insert(1769, "US");
290 phone_prefix.insert(1770, "US");
291 phone_prefix.insert(1772, "US");
292 phone_prefix.insert(1773, "US");
293 phone_prefix.insert(1774, "US");
294 phone_prefix.insert(1775, "US");
295 phone_prefix.insert(1778, "CA");
296 phone_prefix.insert(1779, "US");
297 phone_prefix.insert(1780, "CA");
298 phone_prefix.insert(1781, "US");
299 phone_prefix.insert(1782, "CA");
300 phone_prefix.insert(1784, "VC");
301 phone_prefix.insert(1785, "US");
302 phone_prefix.insert(1786, "US");
303 phone_prefix.insert(1787, "PR");
304 phone_prefix.insert(1800, "US");
305 phone_prefix.insert(1801, "US");
306 phone_prefix.insert(1802, "US");
307 phone_prefix.insert(1803, "US");
308 phone_prefix.insert(1804, "US");
309 phone_prefix.insert(1805, "US");
310 phone_prefix.insert(1806, "US");
311 phone_prefix.insert(1807, "CA");
312 phone_prefix.insert(1808, "US");
313 phone_prefix.insert(1809, "DO");
314 phone_prefix.insert(1810, "US");
315 phone_prefix.insert(1812, "US");
316 phone_prefix.insert(1813, "US");
317 phone_prefix.insert(1814, "US");
318 phone_prefix.insert(1815, "US");
319 phone_prefix.insert(1816, "US");
320 phone_prefix.insert(1817, "US");
321 phone_prefix.insert(1818, "US");
322 phone_prefix.insert(1819, "CA");
323 phone_prefix.insert(1825, "CA");
324 phone_prefix.insert(1828, "US");
325 phone_prefix.insert(1829, "DO");
326 phone_prefix.insert(1830, "US");
327 phone_prefix.insert(1831, "US");
328 phone_prefix.insert(1832, "US");
329 phone_prefix.insert(1843, "US");
330 phone_prefix.insert(1844, "US");
331 phone_prefix.insert(1845, "US");
332 phone_prefix.insert(1847, "US");
333 phone_prefix.insert(1848, "US");
334 phone_prefix.insert(1849, "DO");
335 phone_prefix.insert(1850, "US");
336 phone_prefix.insert(1855, "US");
337 phone_prefix.insert(1856, "US");
338 phone_prefix.insert(1857, "US");
339 phone_prefix.insert(1858, "US");
340 phone_prefix.insert(1859, "US");
341 phone_prefix.insert(1860, "US");
342 phone_prefix.insert(1862, "US");
343 phone_prefix.insert(1863, "US");
344 phone_prefix.insert(1864, "US");
345 phone_prefix.insert(1865, "US");
346 phone_prefix.insert(1866, "US");
347 phone_prefix.insert(1867, "CA");
348 phone_prefix.insert(1868, "TT");
349 phone_prefix.insert(1869, "KN");
350 phone_prefix.insert(1870, "US");
351 phone_prefix.insert(1872, "US");
352 phone_prefix.insert(1873, "CA");
353 phone_prefix.insert(1876, "JM");
354 phone_prefix.insert(1877, "US");
355 phone_prefix.insert(1878, "US");
356 phone_prefix.insert(1888, "US");
357 phone_prefix.insert(1900, "US");
358 phone_prefix.insert(1901, "US");
359 phone_prefix.insert(1902, "CA");
360 phone_prefix.insert(1903, "US");
361 phone_prefix.insert(1904, "US");
362 phone_prefix.insert(1905, "CA");
363 phone_prefix.insert(1906, "US");
364 phone_prefix.insert(1907, "US");
365 phone_prefix.insert(1908, "US");
366 phone_prefix.insert(1909, "US");
367 phone_prefix.insert(1910, "US");
368 phone_prefix.insert(1912, "US");
369 phone_prefix.insert(1913, "US");
370 phone_prefix.insert(1914, "US");
371 phone_prefix.insert(1915, "US");
372 phone_prefix.insert(1916, "US");
373 phone_prefix.insert(1917, "US");
374 phone_prefix.insert(1918, "US");
375 phone_prefix.insert(1919, "US");
376 phone_prefix.insert(1920, "US");
377 phone_prefix.insert(1925, "US");
378 phone_prefix.insert(1928, "US");
379 phone_prefix.insert(1929, "US");
380 phone_prefix.insert(1930, "US");
381 phone_prefix.insert(1931, "US");
382 phone_prefix.insert(1935, "US");
383 phone_prefix.insert(1936, "US");
384 phone_prefix.insert(1937, "US");
385 phone_prefix.insert(1938, "US");
386 phone_prefix.insert(1939, "PR");
387 phone_prefix.insert(1940, "US");
388 phone_prefix.insert(1941, "US");
389 phone_prefix.insert(1947, "US");
390 phone_prefix.insert(1949, "US");
391 phone_prefix.insert(1951, "US");
392 phone_prefix.insert(1952, "US");
393 phone_prefix.insert(1954, "US");
394 phone_prefix.insert(1956, "US");
395 phone_prefix.insert(1959, "US");
396 phone_prefix.insert(1970, "US");
397 phone_prefix.insert(1971, "US");
398 phone_prefix.insert(1972, "US");
399 phone_prefix.insert(1973, "US");
400 phone_prefix.insert(1978, "US");
401 phone_prefix.insert(1979, "US");
402 phone_prefix.insert(1980, "US");
403 phone_prefix.insert(1984, "US");
404 phone_prefix.insert(1985, "US");
405 phone_prefix.insert(1989, "US");
406 phone_prefix.insert(20, "EG");
407 phone_prefix.insert(211, "SS");
408 phone_prefix.insert(212, "MA");
409 phone_prefix.insert(213, "DZ");
410 phone_prefix.insert(216, "TN");
411 phone_prefix.insert(218, "LY");
412 phone_prefix.insert(220, "GM");
413 phone_prefix.insert(221, "SN");
414 phone_prefix.insert(222, "MR");
415 phone_prefix.insert(223, "ML");
416 phone_prefix.insert(224, "GN");
417 phone_prefix.insert(225, "CI");
418 phone_prefix.insert(226, "BF");
419 phone_prefix.insert(227, "NE");
420 phone_prefix.insert(228, "TG");
421 phone_prefix.insert(229, "BJ");
422 phone_prefix.insert(230, "MU");
423 phone_prefix.insert(231, "LR");
424 phone_prefix.insert(232, "SL");
425 phone_prefix.insert(233, "GH");
426 phone_prefix.insert(234, "NG");
427 phone_prefix.insert(235, "TD");
428 phone_prefix.insert(236, "CF");
429 phone_prefix.insert(237, "CM");
430 phone_prefix.insert(238, "CV");
431 phone_prefix.insert(239, "ST");
432 phone_prefix.insert(240, "GQ");
433 phone_prefix.insert(241, "GA");
434 phone_prefix.insert(242, "CG");
435 phone_prefix.insert(243, "CD");
436 phone_prefix.insert(244, "AO");
437 phone_prefix.insert(245, "GW");
438 phone_prefix.insert(246, "IO");
439 phone_prefix.insert(247, "AC");
440 phone_prefix.insert(248, "SC");
441 phone_prefix.insert(249, "SD");
442 phone_prefix.insert(250, "RW");
443 phone_prefix.insert(251, "ET");
444 phone_prefix.insert(252, "SO");
445 phone_prefix.insert(253, "DJ");
446 phone_prefix.insert(254, "KE");
447 phone_prefix.insert(255, "TZ");
448 phone_prefix.insert(256, "UG");
449 phone_prefix.insert(257, "BI");
450 phone_prefix.insert(258, "MZ");
451 phone_prefix.insert(260, "ZM");
452 phone_prefix.insert(261, "MG");
453 phone_prefix.insert(262269, "YT");
454 phone_prefix.insert(262639, "YT");
455 phone_prefix.insert(262, "RE");
456 phone_prefix.insert(263, "ZW");
457 phone_prefix.insert(264, "NA");
458 phone_prefix.insert(265, "MW");
459 phone_prefix.insert(266, "LS");
460 phone_prefix.insert(267, "BW");
461 phone_prefix.insert(268, "SZ");
462 phone_prefix.insert(269, "KM");
463 phone_prefix.insert(27, "ZA");
464 phone_prefix.insert(290, "SH");
465 phone_prefix.insert(291, "ER");
466 phone_prefix.insert(297, "AW");
467 phone_prefix.insert(298, "FO");
468 phone_prefix.insert(299, "GL");
469 phone_prefix.insert(30, "GR");
470 phone_prefix.insert(31, "NL");
471 phone_prefix.insert(32, "BE");
472 phone_prefix.insert(33, "FR");
473 phone_prefix.insert(34, "ES");
474 phone_prefix.insert(350, "GI");
475 phone_prefix.insert(351, "PT");
476 phone_prefix.insert(352, "LU");
477 phone_prefix.insert(353, "IE");
478 phone_prefix.insert(354, "IS");
479 phone_prefix.insert(355, "AL");
480 phone_prefix.insert(356, "MT");
481 phone_prefix.insert(357, "CY");
482 phone_prefix.insert(358, "FI");
483 phone_prefix.insert(35818, "AX");
484 phone_prefix.insert(359, "BG");
485 phone_prefix.insert(36, "HU");
486 phone_prefix.insert(370, "LT");
487 phone_prefix.insert(371, "LV");
488 phone_prefix.insert(372, "EE");
489 phone_prefix.insert(373, "MD");
490 phone_prefix.insert(374, "AM");
491 phone_prefix.insert(375, "BY");
492 phone_prefix.insert(376, "AD");
493 phone_prefix.insert(377, "MC");
494 phone_prefix.insert(378, "SM");
495 phone_prefix.insert(379, "VA");
496 phone_prefix.insert(380, "UA");
497 phone_prefix.insert(381, "RS");
498 phone_prefix.insert(382, "ME");
499 phone_prefix.insert(385, "HR");
500 phone_prefix.insert(386, "SI");
501 phone_prefix.insert(387, "BA");
502 phone_prefix.insert(389, "MK");
503 phone_prefix.insert(39, "IT");
504 phone_prefix.insert(40, "RO");
505 phone_prefix.insert(41, "CH");
506 phone_prefix.insert(420, "CZ");
507 phone_prefix.insert(421, "SK");
508 phone_prefix.insert(423, "LI");
509 phone_prefix.insert(43, "AT");
510 phone_prefix.insert(441481, "GG");
511 phone_prefix.insert(441624, "IM");
512 phone_prefix.insert(441534, "JE");
513 phone_prefix.insert(44, "GB");
514 phone_prefix.insert(45, "DK");
515 phone_prefix.insert(46, "SE");
516 phone_prefix.insert(47, "NO");
517 phone_prefix.insert(4779, "SJ");
518 phone_prefix.insert(48, "PL");
519 phone_prefix.insert(49, "DE");
520 phone_prefix.insert(500, "FK");
521 phone_prefix.insert(501, "BZ");
522 phone_prefix.insert(502, "GT");
523 phone_prefix.insert(503, "SV");
524 phone_prefix.insert(504, "HN");
525 phone_prefix.insert(505, "NI");
526 phone_prefix.insert(506, "CR");
527 phone_prefix.insert(507, "PA");
528 phone_prefix.insert(508, "PM");
529 phone_prefix.insert(509, "HT");
530 phone_prefix.insert(51, "PE");
531 phone_prefix.insert(52, "MX");
532 phone_prefix.insert(53, "CU");
533 phone_prefix.insert(54, "AR");
534 phone_prefix.insert(55, "BR");
535 phone_prefix.insert(56, "CL");
536 phone_prefix.insert(57, "CO");
537 phone_prefix.insert(58, "VE");
538 phone_prefix.insert(590, "GP");
539 phone_prefix.insert(591, "BO");
540 phone_prefix.insert(592, "GY");
541 phone_prefix.insert(593, "EC");
542 phone_prefix.insert(594, "GF");
543 phone_prefix.insert(595, "PY");
544 phone_prefix.insert(596, "MQ");
545 phone_prefix.insert(597, "SR");
546 phone_prefix.insert(598, "UY");
547 phone_prefix.insert(5993, "BQ");
548 phone_prefix.insert(5994, "BQ");
549 phone_prefix.insert(5997, "BQ");
550 phone_prefix.insert(5999, "CW");
551 phone_prefix.insert(60, "MY");
552 phone_prefix.insert(61, "AU");
553 phone_prefix.insert(6189164, "CX");
554 phone_prefix.insert(6189162, "CC");
555 phone_prefix.insert(62, "ID");
556 phone_prefix.insert(63, "PH");
557 phone_prefix.insert(64, "NZ");
558 phone_prefix.insert(65, "SG");
559 phone_prefix.insert(66, "TH");
560 phone_prefix.insert(670, "TL");
561 phone_prefix.insert(6721, "AQ");
562 phone_prefix.insert(6723, "NF");
563 phone_prefix.insert(673, "BN");
564 phone_prefix.insert(674, "NR");
565 phone_prefix.insert(675, "PG");
566 phone_prefix.insert(676, "TO");
567 phone_prefix.insert(677, "SB");
568 phone_prefix.insert(678, "VU");
569 phone_prefix.insert(679, "FJ");
570 phone_prefix.insert(680, "PW");
571 phone_prefix.insert(681, "WF");
572 phone_prefix.insert(682, "CK");
573 phone_prefix.insert(683, "NU");
574 phone_prefix.insert(685, "WS");
575 phone_prefix.insert(686, "KI");
576 phone_prefix.insert(687, "NC");
577 phone_prefix.insert(688, "TV");
578 phone_prefix.insert(689, "PF");
579 phone_prefix.insert(690, "TK");
580 phone_prefix.insert(691, "FM");
581 phone_prefix.insert(692, "MH");
582 phone_prefix.insert(7, "RU");
583 phone_prefix.insert(76, "KZ");
584 phone_prefix.insert(77, "KZ");
585 phone_prefix.insert(800, "XT");
586 phone_prefix.insert(808, "XS");
587 phone_prefix.insert(81, "JP");
588 phone_prefix.insert(82, "KR");
589 phone_prefix.insert(84, "VN");
590 phone_prefix.insert(850, "KP");
591 phone_prefix.insert(852, "HK");
592 phone_prefix.insert(853, "MO");
593 phone_prefix.insert(855, "KH");
594 phone_prefix.insert(856, "LA");
595 phone_prefix.insert(86, "CN");
596 phone_prefix.insert(870, "XN");
597 phone_prefix.insert(878, "XP");
598 phone_prefix.insert(880, "BD");
599 phone_prefix.insert(881, "XG");
600 phone_prefix.insert(882, "XV");
601 phone_prefix.insert(883, "XV");
602 phone_prefix.insert(886, "TW");
603 phone_prefix.insert(90, "TR");
604 phone_prefix.insert(91, "IN");
605 phone_prefix.insert(92, "PK");
606 phone_prefix.insert(93, "AF");
607 phone_prefix.insert(94, "LK");
608 phone_prefix.insert(95, "MM");
609 phone_prefix.insert(960, "MV");
610 phone_prefix.insert(961, "LB");
611 phone_prefix.insert(962, "JO");
612 phone_prefix.insert(963, "SY");
613 phone_prefix.insert(964, "IQ");
614 phone_prefix.insert(965, "KW");
615 phone_prefix.insert(966, "SA");
616 phone_prefix.insert(967, "YE");
617 phone_prefix.insert(968, "OM");
618 phone_prefix.insert(970, "PS");
619 phone_prefix.insert(971, "AE");
620 phone_prefix.insert(972, "IL");
621 phone_prefix.insert(973, "BH");
622 phone_prefix.insert(974, "QA");
623 phone_prefix.insert(975, "BT");
624 phone_prefix.insert(976, "MN");
625 phone_prefix.insert(977, "NP");
626 phone_prefix.insert(98, "IR");
627 phone_prefix.insert(992, "TJ");
628 phone_prefix.insert(993, "TM");
629 phone_prefix.insert(994, "AZ");
630 phone_prefix.insert(995, "GE");
631 phone_prefix.insert(996, "KG");
632 phone_prefix.insert(998, "UZ");
633
634 if phone.len() < 10 {
635 panic!("phone length needs to be at least 10 digits");
636 }
637 let mut prefix = 0;
638 if &phone[0 .. 1] == "1" {
639 prefix = phone[0 .. 4].parse::<i32>().unwrap();
640 } else {
641 let s = &phone[0 .. 7];
642
643 let mut done = false;
645 let mut x = s.len();
646 while !done {
647 x-=1;
648 let ns = s[..x].to_owned().parse::<i32>().unwrap();
649 println!("{}", ns);
650 if phone_prefix.contains_key(&ns) {
651 prefix = ns;
652 done = true;
653 }
654 if x == 1 {
655 done = true;
656 }
657 }
658 }
659
660 return match phone_prefix.get(&prefix) {
661 Some(x) => x,
662 None => ""
663 };
664}
665
666pub fn find_phone_cc(code:&str) -> &'static str {
667 let mut iso_3166 = HashMap::new();
668 iso_3166.insert("US", "1");
669 iso_3166.insert("CA", "1");
670 iso_3166.insert("AC", "247");
671 iso_3166.insert("AD", "376");
672 iso_3166.insert("AE", "971");
673 iso_3166.insert("AF", "93");
674 iso_3166.insert("AG", "1");
675 iso_3166.insert("AI", "1");
676 iso_3166.insert("AL", "355");
677 iso_3166.insert("AM", "374");
678 iso_3166.insert("AO", "244");
679 iso_3166.insert("AQ", "672");
680 iso_3166.insert("AR", "54");
681 iso_3166.insert("AS", "1");
682 iso_3166.insert("AT", "43");
683 iso_3166.insert("AU", "61");
684 iso_3166.insert("AW", "297");
685 iso_3166.insert("AX", "35818");
686 iso_3166.insert("AZ", "994");
687 iso_3166.insert("BA", "387");
688 iso_3166.insert("BB", "1");
689 iso_3166.insert("BD", "880");
690 iso_3166.insert("BE", "32");
691 iso_3166.insert("BF", "226");
692 iso_3166.insert("BG", "359");
693 iso_3166.insert("BH", "973");
694 iso_3166.insert("BI", "257");
695 iso_3166.insert("BJ", "229");
696 iso_3166.insert("BM", "1");
697 iso_3166.insert("BN", "673");
698 iso_3166.insert("BO", "591");
699 iso_3166.insert("BQ", "599");iso_3166.insert("BR", "55");
701 iso_3166.insert("BS", "1");
702 iso_3166.insert("BT", "975");
703 iso_3166.insert("BW", "267");
704 iso_3166.insert("BY", "375");
705 iso_3166.insert("BZ", "501");
706 iso_3166.insert("CC", "6189162");
707 iso_3166.insert("CD", "243");
708 iso_3166.insert("CF", "236");
709 iso_3166.insert("CG", "242");
710 iso_3166.insert("CH", "41");
711 iso_3166.insert("CI", "225");
712 iso_3166.insert("CK", "682");
713 iso_3166.insert("CL", "56");
714 iso_3166.insert("CM", "237");
715 iso_3166.insert("CN", "86");
716 iso_3166.insert("CO", "57");
717 iso_3166.insert("CR", "506");
718 iso_3166.insert("CU", "53");
719 iso_3166.insert("CV", "238");
720 iso_3166.insert("CW", "5999");
721 iso_3166.insert("CX", "6189164");
722 iso_3166.insert("CY", "357");
723 iso_3166.insert("CZ", "420");
724 iso_3166.insert("DE", "49");
725 iso_3166.insert("DJ", "253");
726 iso_3166.insert("DK", "45");
727 iso_3166.insert("DM", "1");
728 iso_3166.insert("DO", "1");
729 iso_3166.insert("DZ", "213");
730 iso_3166.insert("EC", "593");
731 iso_3166.insert("EE", "372");
732 iso_3166.insert("EG", "20");
733 iso_3166.insert("ER", "291");
734 iso_3166.insert("ES", "34");
735 iso_3166.insert("ET", "251");
736 iso_3166.insert("FI", "358");
737 iso_3166.insert("FJ", "679");
738 iso_3166.insert("FK", "500");
739 iso_3166.insert("FM", "691");
740 iso_3166.insert("FO", "298");
741 iso_3166.insert("FR", "33");
742 iso_3166.insert("GA", "241");
743 iso_3166.insert("GB", "44");
744 iso_3166.insert("GD", "1");
745 iso_3166.insert("GE", "995");
746 iso_3166.insert("GF", "594");
747 iso_3166.insert("GG", "441481");
748 iso_3166.insert("GH", "233");
749 iso_3166.insert("GI", "350");
750 iso_3166.insert("GL", "299");
751 iso_3166.insert("GM", "220");
752 iso_3166.insert("GN", "224");
753 iso_3166.insert("GP", "590");
754 iso_3166.insert("GQ", "240");
755 iso_3166.insert("GR", "30");
756 iso_3166.insert("GT", "502");
757 iso_3166.insert("GU", "1");
758 iso_3166.insert("GW", "245");
759 iso_3166.insert("GY", "592");
760 iso_3166.insert("HK", "852");
761 iso_3166.insert("HN", "504");
762 iso_3166.insert("HR", "385");
763 iso_3166.insert("HT", "509");
764 iso_3166.insert("HU", "36");
765 iso_3166.insert("ID", "62");
766 iso_3166.insert("IE", "353");
767 iso_3166.insert("IL", "972");
768 iso_3166.insert("IM", "441624");
769 iso_3166.insert("IN", "91");
770 iso_3166.insert("IO", "246");
771 iso_3166.insert("IQ", "964");
772 iso_3166.insert("IR", "98");
773 iso_3166.insert("IS", "354");
774 iso_3166.insert("IT", "39");
775 iso_3166.insert("JE", "441534");
776 iso_3166.insert("JM", "1");
777 iso_3166.insert("JO", "962");
778 iso_3166.insert("JP", "81");
779 iso_3166.insert("KE", "254");
780 iso_3166.insert("KG", "996");
781 iso_3166.insert("KH", "855");
782 iso_3166.insert("KI", "686");
783 iso_3166.insert("KM", "269");
784 iso_3166.insert("KN", "1");
785 iso_3166.insert("KP", "850");
786 iso_3166.insert("KR", "82");
787 iso_3166.insert("KW", "965");
788 iso_3166.insert("KY", "1");
789 iso_3166.insert("KZ", "7");
790 iso_3166.insert("LA", "856");
791 iso_3166.insert("LB", "961");
792 iso_3166.insert("LC", "1");
793 iso_3166.insert("LI", "423");
794 iso_3166.insert("LK", "94");
795 iso_3166.insert("LR", "231");
796 iso_3166.insert("LS", "266");
797 iso_3166.insert("LT", "370");
798 iso_3166.insert("LU", "352");
799 iso_3166.insert("LV", "371");
800 iso_3166.insert("LY", "218");
801 iso_3166.insert("MA", "212");
802 iso_3166.insert("MC", "377");
803 iso_3166.insert("MD", "373");
804 iso_3166.insert("ME", "382");
805 iso_3166.insert("MG", "261");
806 iso_3166.insert("MH", "692");
807 iso_3166.insert("MK", "389");
808 iso_3166.insert("ML", "223");
809 iso_3166.insert("MM", "95");
810 iso_3166.insert("MN", "976");
811 iso_3166.insert("MO", "853");
812 iso_3166.insert("MP", "1");
813 iso_3166.insert("MQ", "596");
814 iso_3166.insert("MR", "222");
815 iso_3166.insert("MS", "1");
816 iso_3166.insert("MT", "356");
817 iso_3166.insert("MU", "230");
818 iso_3166.insert("MV", "960");
819 iso_3166.insert("MW", "265");
820 iso_3166.insert("MX", "52");
821 iso_3166.insert("MY", "60");
822 iso_3166.insert("MZ", "258");
823 iso_3166.insert("NA", "264");
824 iso_3166.insert("NC", "687");
825 iso_3166.insert("NE", "227");
826 iso_3166.insert("NF", "6723");
827 iso_3166.insert("NG", "234");
828 iso_3166.insert("NI", "505");
829 iso_3166.insert("NL", "31");
830 iso_3166.insert("NO", "47");
831 iso_3166.insert("NP", "977");
832 iso_3166.insert("NR", "674");
833 iso_3166.insert("NU", "683");
834 iso_3166.insert("NZ", "64");
835 iso_3166.insert("OM", "968");
836 iso_3166.insert("PA", "507");
837 iso_3166.insert("PE", "51");
838 iso_3166.insert("PF", "689");
839 iso_3166.insert("PG", "675");
840 iso_3166.insert("PH", "63");
841 iso_3166.insert("PK", "92");
842 iso_3166.insert("PL", "48");
843 iso_3166.insert("PM", "508");
844 iso_3166.insert("PR", "1");
845 iso_3166.insert("PS", "970");
846 iso_3166.insert("PT", "351");
847 iso_3166.insert("PW", "680");
848 iso_3166.insert("PY", "595");
849 iso_3166.insert("QA", "974");
850 iso_3166.insert("RE", "262");
851 iso_3166.insert("RO", "40");
852 iso_3166.insert("RS", "381");
853 iso_3166.insert("RU", "7");
854 iso_3166.insert("RW", "250");
855 iso_3166.insert("SA", "966");
856 iso_3166.insert("SB", "677");
857 iso_3166.insert("SC", "248");
858 iso_3166.insert("SD", "249");
859 iso_3166.insert("SE", "46");
860 iso_3166.insert("SG", "65");
861 iso_3166.insert("SH", "290");
862 iso_3166.insert("SI", "386");
863 iso_3166.insert("SJ", "4779");
864 iso_3166.insert("SK", "421");
865 iso_3166.insert("SL", "232");
866 iso_3166.insert("SM", "378");
867 iso_3166.insert("SN", "221");
868 iso_3166.insert("SO", "252");
869 iso_3166.insert("SR", "597");
870 iso_3166.insert("SS", "211");
871 iso_3166.insert("ST", "239");
872 iso_3166.insert("SV", "503");
873 iso_3166.insert("SX", "1");
874 iso_3166.insert("SY", "963");
875 iso_3166.insert("SZ", "268");
876 iso_3166.insert("TC", "1");
877 iso_3166.insert("TD", "235");
878 iso_3166.insert("TG", "228");
879 iso_3166.insert("TH", "66");
880 iso_3166.insert("TJ", "992");
881 iso_3166.insert("TK", "690");
882 iso_3166.insert("TL", "670");
883 iso_3166.insert("TM", "993");
884 iso_3166.insert("TN", "216");
885 iso_3166.insert("TO", "676");
886 iso_3166.insert("TR", "90");
887 iso_3166.insert("TT", "1");
888 iso_3166.insert("TV", "688");
889 iso_3166.insert("TW", "886");
890 iso_3166.insert("TZ", "255");
891 iso_3166.insert("UA", "380");
892 iso_3166.insert("UG", "256");
893 iso_3166.insert("UY", "598");
894 iso_3166.insert("UZ", "998");
895 iso_3166.insert("VA", "379");
896 iso_3166.insert("VC", "1");
897 iso_3166.insert("VE", "58");
898 iso_3166.insert("VG", "1");
899 iso_3166.insert("VI", "1");
900 iso_3166.insert("VN", "84");
901 iso_3166.insert("VU", "678");
902 iso_3166.insert("WF", "681");
903 iso_3166.insert("WS", "685");
904 iso_3166.insert("XG", "881");
905 iso_3166.insert("XN", "870");
906 iso_3166.insert("XP", "878");
907 iso_3166.insert("XS", "808");
908 iso_3166.insert("XT", "800");
909 iso_3166.insert("XV", "882");
910 iso_3166.insert("YE", "967");
912 iso_3166.insert("YT", "262");
913 iso_3166.insert("ZA", "27");
914 iso_3166.insert("ZM", "260");
915 iso_3166.insert("ZW", "263");
916
917 return match iso_3166.get(code) {
918 Some(x) => x,
919 None => ""
920 };
921}
922