random_names/lib.rs
1//! This small library just generates random names.
2//!
3//! Its purpose is to create identifiers that do not have to be
4//! strictly unique like names for server nodes etc.
5//!
6//! The names are only usable for better reading where identifiers appear such as log files etc.
7//!
8//! This library is not meant to create fake data for testing.
9extern crate rand;
10
11use std::fmt::{Display, Formatter, Result};
12use std::convert::Into;
13use std::ops::Deref;
14use rand::{Rng, OsRng};
15
16
17/// A `RandomName` is just a container for a `String`.
18#[derive(Debug, Clone, PartialEq)]
19pub struct RandomName {
20 pub name: String,
21}
22
23impl RandomName {
24 /// Creates a new `RandomName` that contains a random name.
25 ///
26 /// This function just calls `create_name` with a freshly generated random number generator.
27 ///
28 /// Internally this function tries to create an `OsRng` which can fail. Then the random name is not
29 /// random anymore but "EDWIN ERROR".
30 pub fn new() -> RandomName {
31 let mut rng = match OsRng::new() {
32 Ok(rng) => rng,
33 Err(_) => return RandomName { name: "EDWIN ERROR".to_owned() },
34 };
35 RandomName { name: create_name(&mut rng) }
36 }
37}
38
39impl Display for RandomName {
40 fn fmt(&self, f: &mut Formatter) -> Result {
41 write!(f, "{}", self.name)
42 }
43}
44
45impl Deref for RandomName {
46 type Target = str;
47 fn deref(&self) -> &Self::Target {
48 self.name.as_ref()
49 }
50}
51
52impl Into<String> for RandomName {
53 fn into(self) -> String {
54 self.name
55 }
56}
57
58/// Creates a new `RandomName` given a random number generator.
59pub fn create_name<T: Rng>(rng: &mut T) -> String {
60 let name: &str = rng.choose(NAMES).map(|x| *x).unwrap_or(NO_NAMES_NAME);
61 let surname: &str = rng.choose(SURNAMES).map(|x| *x).unwrap_or(NO_NAMES_SURNAME);
62 format!("{} {}", name, surname)
63}
64
65const NO_NAMES_NAME: &'static str = "JOHN";
66const NO_NAMES_SURNAME: &'static str = "DOE";
67
68const NAMES: &'static [&'static str] = &["Lyric",
69 "Bryce",
70 "Cole",
71 "Cristofer",
72 "Kyan",
73 "Enrique",
74 "Reid",
75 "Gage",
76 "Baron",
77 "Armando",
78 "Davin",
79 "Nash",
80 "Jaiden",
81 "Erick",
82 "Jase",
83 "Kamari",
84 "Jamarion",
85 "Adrian",
86 "Arjun",
87 "Donavan",
88 "Julius",
89 "Carson",
90 "Abram",
91 "Lewis",
92 "Oscar",
93 "Julien",
94 "Ellis",
95 "Enzo",
96 "Fletcher",
97 "Jamar",
98 "Tyrone",
99 "Aden",
100 "Zaiden",
101 "Chance",
102 "Jerimiah",
103 "Joey",
104 "Bo",
105 "Joel",
106 "Humberto",
107 "Zack",
108 "Kael",
109 "Jermaine",
110 "Adam",
111 "Clark",
112 "Rylan",
113 "Ross",
114 "Kieran",
115 "Brodie",
116 "Sidney",
117 "Sean",
118 "Arthur",
119 "Weston",
120 "Trenton",
121 "Conrad",
122 "Dangelo",
123 "Ian",
124 "Isaias",
125 "Soren",
126 "Kyle",
127 "Darien",
128 "Larry",
129 "Sage",
130 "Matteo",
131 "Jabari",
132 "Kash",
133 "Austin",
134 "Curtis",
135 "Jonathon",
136 "Israel",
137 "Octavio",
138 "Everett",
139 "Johnny",
140 "Gustavo",
141 "Brayden",
142 "Hassan",
143 "Dustin",
144 "Moses",
145 "Zayne",
146 "Kadyn",
147 "Albert",
148 "David",
149 "Zackary",
150 "Gilbert",
151 "Darrell",
152 "Efrain",
153 "Jon",
154 "Carmelo",
155 "Quinten",
156 "Donald",
157 "Keith",
158 "Dominique",
159 "Timothy",
160 "Broderick",
161 "Tyrell",
162 "Zachery",
163 "Wayne",
164 "Marvin",
165 "Cory",
166 "Kaeden",
167 "Gunnar",
168 "Waylon",
169 "Keyon",
170 "Angel",
171 "Abdiel",
172 "Dylan",
173 "Edward",
174 "Roy",
175 "Brock",
176 "Alfredo",
177 "Camren",
178 "Rhys",
179 "Jayce",
180 "Elliott",
181 "Felipe",
182 "Randy",
183 "Elijah",
184 "Slade",
185 "Wilson",
186 "Randall",
187 "Remington",
188 "Lennon",
189 "Richard",
190 "Nasir",
191 "Kellen",
192 "Carl",
193 "Kingston",
194 "Kymani",
195 "Ruben",
196 "Gianni",
197 "Ethan",
198 "Misael",
199 "Bradley",
200 "Paxton",
201 "Sebastian",
202 "Boston",
203 "Devan",
204 "Case",
205 "Conner",
206 "Antonio",
207 "Lukas",
208 "Nick",
209 "Alfonso",
210 "Lane",
211 "Andre",
212 "Thomas",
213 "Tanner",
214 "Leland",
215 "Kylan",
216 "Barrett",
217 "Jaden",
218 "Logan",
219 "Colton",
220 "Axel",
221 "Giovani",
222 "Royce",
223 "Caden",
224 "Titus",
225 "Vicente",
226 "Leonel",
227 "Jason",
228 "Silas",
229 "Damian",
230 "Rocco",
231 "Antony",
232 "Kameron",
233 "Chad",
234 "Kane",
235 "Beckett",
236 "Cedric",
237 "Shane",
238 "Mathias",
239 "Aaron",
240 "Kade",
241 "Luca",
242 "Reece",
243 "Seth",
244 "Noe",
245 "Ezequiel",
246 "Grady",
247 "Uriah",
248 "Russell",
249 "Emmanuel",
250 "Rene",
251 "Teagan",
252 "Gavyn",
253 "Jaxson",
254 "Antwan",
255 "Maurice",
256 "Maxwell",
257 "Brendon",
258 "Justice",
259 "Dax",
260 "Kenny",
261 "Damon",
262 "Drake",
263 "Tony",
264 "Pedro",
265 "Mathew",
266 "Dennis",
267 "Jorge",
268 "Ashlyn",
269 "Meadow",
270 "Ava",
271 "Ryan",
272 "Makayla",
273 "Livia",
274 "Giada",
275 "Vanessa",
276 "Trinity",
277 "Pamela",
278 "Kianna",
279 "Cristal",
280 "Natasha",
281 "Nadia",
282 "Skylar",
283 "Chloe",
284 "Crystal",
285 "Cherish",
286 "Victoria",
287 "Marisol",
288 "Britney",
289 "Micah",
290 "Isabela",
291 "Grace",
292 "Ryleigh",
293 "Jacquelyn",
294 "Alejandra",
295 "Kayley",
296 "Alexia",
297 "Cindy",
298 "Sophia",
299 "Renee",
300 "Nia",
301 "Neveah",
302 "Sherlyn",
303 "Josie",
304 "Mareli",
305 "Addisyn",
306 "Amaris",
307 "Madalynn",
308 "Valery",
309 "Olive",
310 "Kinley",
311 "Kyleigh",
312 "Paloma",
313 "Alice",
314 "Adriana",
315 "Emilee",
316 "Jaden",
317 "Isabella",
318 "Ximena",
319 "Chanel",
320 "Reina",
321 "Mattie",
322 "Melina",
323 "Jayla",
324 "Audrey",
325 "Maryjane",
326 "Maritza",
327 "Helen",
328 "Patricia",
329 "Sasha",
330 "Paityn",
331 "Alina",
332 "Charlize",
333 "Megan",
334 "Marlee",
335 "Jillian",
336 "Evie",
337 "Lily",
338 "Camila",
339 "Erika",
340 "Paige",
341 "Lina",
342 "Lucille",
343 "Alexus",
344 "Natalya",
345 "Jaylene",
346 "Isabelle",
347 "Elsa",
348 "Jaida",
349 "Lucia",
350 "Fatima",
351 "Elliana",
352 "Lucy",
353 "Kenley",
354 "Nevaeh",
355 "Jaiden",
356 "Deja",
357 "Justine",
358 "Lola",
359 "Angelina",
360 "Tanya",
361 "Princess",
362 "Celeste",
363 "Genesis",
364 "Carley",
365 "Emmalee",
366 "Tess",
367 "Hanna",
368 "Alyson",
369 "Karsyn",
370 "Virginia",
371 "Destiny",
372 "Mireya",
373 "Aniya",
374 "Kimberly",
375 "Ella",
376 "Sage",
377 "Cora",
378 "Kayla",
379 "Wendy",
380 "Jolie",
381 "Lila",
382 "Samantha",
383 "Riya",
384 "Aryanna",
385 "Krystal",
386 "Rosemary",
387 "Isabel",
388 "Damaris",
389 "Susan",
390 "Kara",
391 "Raelynn",
392 "Cassidy",
393 "Monica",
394 "Alexandra",
395 "Destiney",
396 "Alison",
397 "Johanna",
398 "Anya",
399 "Janessa",
400 "Baylee",
401 "Caitlyn",
402 "Sierra",
403 "Maribel",
404 "Angeline",
405 "Ashtyn",
406 "Anahi",
407 "Jaylynn",
408 "Cailyn",
409 "Giuliana",
410 "Cristina",
411 "Tania",
412 "Karli",
413 "Hailey",
414 "Emerson",
415 "Ellen",
416 "Teagan",
417 "Aaliyah",
418 "Jamiya",
419 "Giana",
420 "Maliyah",
421 "Emely",
422 "Valerie",
423 "Rachael",
424 "Jadyn",
425 "Kaia",
426 "June",
427 "Jenny",
428 "Hadley",
429 "Kennedi",
430 "Selena",
431 "Josephine",
432 "Jazmyn",
433 "Zoie",
434 "Logan",
435 "Lainey",
436 "Mallory",
437 "Maren",
438 "Andrea",
439 "Naima",
440 "Clarissa",
441 "Kaya",
442 "Dalia",
443 "Kailey",
444 "Braelyn",
445 "Faith",
446 "Daniela",
447 "Phoebe",
448 "Diamond",
449 "Deborah",
450 "Genevieve",
451 "Rayne",
452 "Jade",
453 "Reagan",
454 "Brenna",
455 "Michelle",
456 "Jaelyn",
457 "Jaqueline",
458 "Regina",
459 "Kylee",
460 "Evelyn",
461 "Valeria",
462 "Kenna",
463 "Amiyah",
464 "Zaria",
465 "Camilla",
466 "Kate",
467 "Laney",
468 "Whitney",
469 "Anika",
470 "Erin",
471 "Jayden",
472 "Madeline",
473 "Izabelle",
474 "Melanie",
475 "Kassidy",
476 "Judith",
477 "Harmony",
478 "Fernanda",
479 "Priscilla",
480 "Cali",
481 "Anabelle",
482 "Nathaly",
483 "Lana",
484 "Haven",
485 "Aliza",
486 "Rachel",
487 "Nayeli",
488 "Annabella",
489 "Yaritza",
490 "Sonia",
491 "Ariella",
492 "Lisa",
493 "Emmy",
494 "Kaylah",
495 "Kenya",
496 "Miranda",
497 "Chelsea",
498 "Taryn",
499 "Janelle",
500 "Angelique",
501 "Leilani",
502 "Kadence",
503 "Shyanne",
504 "Marie",
505 "Cameron",
506 "Leia",
507 "Jordyn",
508 "Aylin",
509 "Aimee",
510 "Kiley",
511 "Kamari",
512 "Aniyah",
513 "Kaylin",
514 "Sanai",
515 "Lilian",
516 "Carlie",
517 "Jayleen",
518 "Hannah",
519 "Dulce",
520 "Jessie",
521 "Natalie",
522 "Giovanna",
523 "Aryana",
524 "Nylah",
525 "Karley",
526 "Alani",
527 "Laurel",
528 "Iliana",
529 "Taniya",
530 "Mckenna",
531 "Rhianna",
532 "Kyra",
533 "Cynthia",
534 "Anabel",
535 "Salma",
536 "Melody",
537 "Armani",
538 "Lena",
539 "Hazel",
540 "Melissa",
541 "Layla",
542 "Elisa",
543 "Eleanor",
544 "Tamia",
545 "Linda",
546 "Penelope",
547 "Phoenix",
548 "Jayda",
549 "Melany",
550 "Aracely",
551 "Zoe",
552 "Kiera",
553 "Nataly",
554 "Marianna",
555 "Kamora",
556 "Kierra",
557 "Jocelynn",
558 "Joselyn",
559 "Shyla",
560 "Desiree",
561 "Liliana",
562 "Tori",
563 "Laura",
564 "Guadalupe",
565 "Iris",
566 "Cheyenne",
567 "Brisa",
568 "Jakayla",
569 "Summer",
570 "Kaylen",
571 "Irene",
572 "Leyla",
573 "Elaine",
574 "Alena",
575 "Liberty",
576 "McKayla",
577 "Mya",
578 "Gia",
579 "Jaslyn",
580 "Gracie",
581 "Haylie",
582 "Brylee",
583 "Amanda",
584 "Eileen",
585 "Kailee",
586 "Janiya",
587 "Anaya",
588 "Keyla",
589 "Amber",
590 "Kaitlin",
591 "Ashlee",
592 "Shannon",
593 "Alana",
594 "Lea",
595 "Perla",
596 "Madelynn",
597 "Kennedy",
598 "Adison",
599 "Kenzie",
600 "Rylie",
601 "Desirae",
602 "Jimena",
603 "Diya",
604 "Shea",
605 "Shania",
606 "Iyana",
607 "Aleena",
608 "Emery",
609 "Ayana",
610 "Kaiya",
611 "Justice",
612 "Sienna",
613 "Simone",
614 "Naomi",
615 "Saige",
616 "Emelia",
617 "Emilie",
618 "Danika",
619 "Juliana",
620 "Nyasia",
621 "Kiersten",
622 "Janiah",
623 "Nola",
624 "Adalynn",
625 "Reyna",
626 "Ada",
627 "Kaley",
628 "Gina",
629 "Aliya",
630 "Cheyanne",
631 "Felicity",
632 "Camryn",
633 "Madisyn",
634 "Addison",
635 "Cloe",
636 "Malia",
637 "Abigail",
638 "Lia",
639 "Macy",
640 "Abril",
641 "Kira",
642 "Lindsey",
643 "Sophie",
644 "Esperanza",
645 "Danna",
646 "Zariah",
647 "Laila",
648 "Molly",
649 "Jasmine",
650 "Mikaela",
651 "Audrina",
652 "Alisa",
653 "Gabriella",
654 "Sofia",
655 "Arielle",
656 "Madilynn",
657 "Angelica",
658 "Carolina",
659 "Scarlet",
660 "Mackenzie",
661 "Monique",
662 "Essence",
663 "Natalia",
664 "Ruth",
665 "Katrina",
666 "Shelby",
667 "Cara",
668 "Freddy",
669 "Gary",
670 "Lakeisha",
671 "Ione",
672 "Margot",
673 "Kary",
674 "Dirk",
675 "Rosella",
676 "Erinn",
677 "Mario",
678 "Dalila",
679 "Avis",
680 "Rupert",
681 "Dione",
682 "Giovanni",
683 "Ligia",
684 "Alysia",
685 "Coralie",
686 "Helen",
687 "Leigha",
688 "Kathe",
689 "Katrice",
690 "Hermila",
691 "Omar",
692 "Ivory",
693 "Deane",
694 "Odilia",
695 "Jaymie",
696 "Brittaney",
697 "Ofelia",
698 "Sharonda",
699 "Jayson",
700 "Truman",
701 "Lewis",
702 "Georgiana",
703 "Elanor",
704 "Erma",
705 "Riva",
706 "Laureen",
707 "Ouida",
708 "Katina",
709 "Mechelle",
710 "Lyndon",
711 "Gertie",
712 "Jon",
713 "Tisa",
714 "Hayden",
715 "Ty",
716 "Jacklyn",
717 "Mickie"];
718
719
720const SURNAMES: &'static [&'static str] = &["Soto",
721 "Maddox",
722 "Weber",
723 "Ward",
724 "Brandt",
725 "Shelton",
726 "Wilkerson",
727 "Schmitt",
728 "Riley",
729 "Leon",
730 "Benson",
731 "Everett",
732 "Aguilar",
733 "Brown",
734 "Dalton",
735 "Gonzalez",
736 "Zavala",
737 "Williamson",
738 "Dodson",
739 "Carlson",
740 "Castro",
741 "Christian",
742 "Huynh",
743 "Sanford",
744 "Copeland",
745 "Sharp",
746 "Freeman",
747 "Carpenter",
748 "Herring",
749 "Dillon",
750 "Rowland",
751 "Stanley",
752 "Shields",
753 "Newman",
754 "Gross",
755 "Harding",
756 "Duke",
757 "Higgins",
758 "McMillan",
759 "Floyd",
760 "Pena",
761 "Yates",
762 "Butler",
763 "Beard",
764 "Burgess",
765 "Fuller",
766 "Lawrence",
767 "Buchanan",
768 "David",
769 "Solis",
770 "Gilmore",
771 "Holden",
772 "Petersen",
773 "Schroeder",
774 "Duarte",
775 "Blevins",
776 "Lynch",
777 "Washington",
778 "Sandoval",
779 "Hunt",
780 "Hebert",
781 "Macdonald",
782 "Mack",
783 "Sheppard",
784 "McKenzie",
785 "Norris",
786 "Dennis",
787 "Tate",
788 "Lyons",
789 "Morgan",
790 "Barajas",
791 "Galvan",
792 "Patel",
793 "Santana",
794 "Meza",
795 "Martinez",
796 "Banks",
797 "Hughes",
798 "Harvey",
799 "Grant",
800 "Clayton",
801 "Coffey",
802 "Pittman",
803 "Hutchinson",
804 "Collier",
805 "Stevenson",
806 "Melendez",
807 "Murillo",
808 "Rodgers",
809 "Mercer",
810 "Armstrong",
811 "Morales",
812 "Douglas",
813 "Douven",
814 "Blanchard",
815 "Wallace",
816 "Mckinney",
817 "Bird",
818 "Bradford",
819 "Cervantes",
820 "Church",
821 "Gordon",
822 "George",
823 "Cochran",
824 "Ayala",
825 "Schaefer",
826 "Frey",
827 "French",
828 "Obrien",
829 "James",
830 "Terry",
831 "Leblanc",
832 "Lewis",
833 "Walton",
834 "Walters",
835 "Lloyd",
836 "Barker",
837 "Singh",
838 "Montes",
839 "Franklin",
840 "Pennington",
841 "Dunn",
842 "Russo",
843 "Austin",
844 "Carter",
845 "Reese",
846 "Mejia",
847 "Hurley",
848 "Krueger",
849 "Foley",
850 "Jacobs",
851 "Fox",
852 "Miranda",
853 "Woods",
854 "Glenn",
855 "Rich",
856 "Frank",
857 "Nash",
858 "Lawson",
859 "Keller",
860 "Novak",
861 "Holmes",
862 "Bowen",
863 "Casey",
864 "Burton",
865 "Guzman",
866 "Vargas",
867 "Riggs",
868 "Atkins",
869 "Lee",
870 "Becker",
871 "Potter",
872 "Gallegos",
873 "Hahn",
874 "Nielsen",
875 "Lane",
876 "Archer",
877 "Carr",
878 "Mason",
879 "Watson",
880 "Hardin",
881 "Fitzpatrick",
882 "Snyder",
883 "Webster",
884 "Rosario",
885 "Tanner",
886 "Deleon",
887 "Cross",
888 "Solomon",
889 "Beasley",
890 "Ibarra",
891 "Arellano",
892 "Carney",
893 "Garner",
894 "Sexton",
895 "Garrett",
896 "Walker",
897 "Gillespie",
898 "Hall",
899 "Maldonado",
900 "Winters",
901 "Barnes",
902 "Robles",
903 "Saunders",
904 "Strong",
905 "Cowan",
906 "Harrell",
907 "McGuire",
908 "Hernandez",
909 "Potts",
910 "Reed",
911 "Mooney",
912 "Carey",
913 "Gould",
914 "Patterson",
915 "Dawson",
916 "Horton",
917 "Farley",
918 "Callahan",
919 "Jensen",
920 "English",
921 "Abraham",
922 "Allan",
923 "Alsop",
924 "Anderson",
925 "Arnold",
926 "Avery",
927 "Bailey",
928 "Baker",
929 "Ball",
930 "Bell",
931 "Berry",
932 "Black",
933 "Blake",
934 "Bond",
935 "Bower",
936 "Brown",
937 "Buckland",
938 "Burgess",
939 "Butler",
940 "Cameron",
941 "Campbell",
942 "Carr",
943 "Chapman",
944 "Churchill",
945 "Clark",
946 "Clarkson",
947 "Coleman",
948 "Cornish",
949 "Davidson",
950 "Davies",
951 "Dickens",
952 "Dowd",
953 "Duncan",
954 "Dyer",
955 "Edmunds",
956 "Ellison",
957 "Ferguson",
958 "Fisher",
959 "Forsyth",
960 "Fraser",
961 "Gibson",
962 "Gill",
963 "Glover",
964 "Graham",
965 "Grant",
966 "Gray",
967 "Greene",
968 "Hamilton",
969 "Hardacre",
970 "Harris",
971 "Hart",
972 "Hemmings",
973 "Henderson",
974 "Hill",
975 "Hodges",
976 "Howard",
977 "Hudson",
978 "Hughes",
979 "Hunter",
980 "Ince",
981 "Jackson",
982 "James",
983 "Johnston",
984 "Jones",
985 "Kelly",
986 "Kerr",
987 "King",
988 "Knox",
989 "Lambert",
990 "Langdon",
991 "Lawrence",
992 "Lee",
993 "Lewis",
994 "Lyman",
995 "MacDonald",
996 "Mackay",
997 "Mackenzie",
998 "MacLeod",
999 "Manning",
1000 "Marshall",
1001 "Martin",
1002 "Mathis",
1003 "May",
1004 "McDonald",
1005 "McLean",
1006 "McGrath",
1007 "Metcalfe",
1008 "Miller",
1009 "Mills",
1010 "Mitchell",
1011 "Morgan",
1012 "Morrison",
1013 "Murray",
1014 "Nash",
1015 "Newman",
1016 "Nolan",
1017 "North",
1018 "Ogden",
1019 "Oliver",
1020 "Paige",
1021 "Parr",
1022 "Parsons",
1023 "Paterson",
1024 "Payne",
1025 "Peake",
1026 "Peters",
1027 "Piper",
1028 "Poole",
1029 "Powell",
1030 "Pullman",
1031 "Quinn",
1032 "Rampling",
1033 "Randall",
1034 "Rees",
1035 "Reid",
1036 "Roberts",
1037 "Robertson",
1038 "Ross",
1039 "Russell",
1040 "Rutherford",
1041 "Sanderson",
1042 "Scott",
1043 "Sharp",
1044 "Short",
1045 "Simpson",
1046 "Skinner",
1047 "Slater",
1048 "Smith",
1049 "Springer",
1050 "Stewart",
1051 "Sutherland",
1052 "Taylor",
1053 "Terry",
1054 "Thomson",
1055 "Tucker",
1056 "Turner",
1057 "Underwood",
1058 "Vance",
1059 "Vaughan",
1060 "Walker",
1061 "Wallace",
1062 "Walsh",
1063 "Watson",
1064 "Welch",
1065 "White",
1066 "Wilkins",
1067 "Wilson",
1068 "Wright",
1069 "Young"];