1const ADJECTIVES: &[&str] = &[
2 "absurd",
3 "accommodating",
4 "accomplished",
5 "acrobatic",
6 "active",
7 "adamant",
8 "adaptable",
9 "adept",
10 "admirable",
11 "admiring",
12 "adorable",
13 "adoring",
14 "adventurous",
15 "affable",
16 "affectionate",
17 "agile",
18 "agitated",
19 "agreeable",
20 "alert",
21 "alluring",
22 "aloof",
23 "amazing",
24 "ambitious",
25 "amiable",
26 "amicable",
27 "amorous",
28 "amused",
29 "amusing",
30 "animated",
31 "anxious",
32 "apologetic",
33 "appreciative",
34 "ardent",
35 "argumentative",
36 "arrogant",
37 "artful",
38 "articulate",
39 "artistic",
40 "assertive",
41 "astonished",
42 "astounding",
43 "astute",
44 "athletic",
45 "atomic",
46 "attentive",
47 "audacious",
48 "authentic",
49 "avid",
50 "awesome",
51 "awkward",
52 "azure",
53 "babbling",
54 "baffled",
55 "baking",
56 "ballooning",
57 "balmy",
58 "bashful",
59 "beaming",
60 "bearded",
61 "beautiful",
62 "beguiling",
63 "belligerent",
64 "beloved",
65 "benevolent",
66 "bewildered",
67 "bickering",
68 "bionic",
69 "bizarre",
70 "blinking",
71 "blissful",
72 "blushing",
73 "boastful",
74 "bohemian",
75 "boisterous",
76 "bold",
77 "bombastic",
78 "bonkers",
79 "bossy",
80 "bouncy",
81 "bountiful",
82 "bowling",
83 "brainy",
84 "brash",
85 "brave",
86 "brazen",
87 "breathless",
88 "breezy",
89 "bright",
90 "brilliant",
91 "brisk",
92 "bubbly",
93 "bulky",
94 "bumbling",
95 "buoyant",
96 "bushy",
97 "busy",
98 "cackling",
99 "caffeinated",
100 "calm",
101 "candid",
102 "capable",
103 "capricious",
104 "captivating",
105 "carefree",
106 "careful",
107 "caring",
108 "casual",
109 "cautious",
110 "cavalier",
111 "celebrated",
112 "cerebral",
113 "chaotic",
114 "charismatic",
115 "charming",
116 "chattering",
117 "chatty",
118 "cheeky",
119 "cheerful",
120 "cheery",
121 "cheesy",
122 "chic",
123 "chilly",
124 "chipper",
125 "chivalrous",
126 "chubby",
127 "chuckling",
128 "chunky",
129 "civil",
130 "clapping",
131 "classy",
132 "clever",
133 "clingy",
134 "cloudy",
135 "clueless",
136 "clumsy",
137 "cocky",
138 "collected",
139 "colorful",
140 "comfy",
141 "comical",
142 "commanding",
143 "compassionate",
144 "composed",
145 "conceited",
146 "confident",
147 "confounded",
148 "confused",
149 "congenial",
150 "conscientious",
151 "considerate",
152 "contemplative",
153 "content",
154 "contrary",
155 "cool",
156 "cordial",
157 "cosmic",
158 "courageous",
159 "courteous",
160 "covert",
161 "coy",
162 "cozy",
163 "crackpot",
164 "crafty",
165 "cranky",
166 "crazy",
167 "creative",
168 "crimson",
169 "crowned",
170 "crusty",
171 "cryptic",
172 "cuddly",
173 "cultured",
174 "cunning",
175 "curious",
176 "cute",
177 "cynical",
178 "daffy",
179 "dainty",
180 "dancing",
181 "dandy",
182 "dapper",
183 "daring",
184 "dashing",
185 "dauntless",
186 "daydreaming",
187 "dazed",
188 "dazzling",
189 "decisive",
190 "dedicated",
191 "defiant",
192 "deft",
193 "delighted",
194 "delightful",
195 "delirious",
196 "demure",
197 "dependable",
198 "determined",
199 "devilish",
200 "devious",
201 "devoted",
202 "diabolical",
203 "dignified",
204 "diligent",
205 "diplomatic",
206 "discerning",
207 "disciplined",
208 "discreet",
209 "disgruntled",
210 "disheveled",
211 "dismayed",
212 "distracted",
213 "dizzy",
214 "docile",
215 "dogged",
216 "doodling",
217 "dopey",
218 "doting",
219 "dotty",
220 "dozing",
221 "dramatic",
222 "dreamy",
223 "droopy",
224 "drowsy",
225 "dubious",
226 "dusty",
227 "dutiful",
228 "dynamic",
229 "eager",
230 "earnest",
231 "easygoing",
232 "eccentric",
233 "ecstatic",
234 "edgy",
235 "effervescent",
236 "efficient",
237 "egotistical",
238 "elaborate",
239 "elastic",
240 "elated",
241 "electric",
242 "elegant",
243 "eloquent",
244 "elusive",
245 "embarrassed",
246 "eminent",
247 "emotional",
248 "empathetic",
249 "enamored",
250 "enchanted",
251 "encouraging",
252 "endearing",
253 "energetic",
254 "energized",
255 "engaging",
256 "enigmatic",
257 "enlightened",
258 "enterprising",
259 "entertaining",
260 "enthusiastic",
261 "envious",
262 "epic",
263 "esteemed",
264 "ethereal",
265 "euphoric",
266 "evasive",
267 "exasperated",
268 "excitable",
269 "excited",
270 "exotic",
271 "expert",
272 "expressive",
273 "exquisite",
274 "extravagant",
275 "exuberant",
276 "fabled",
277 "fabulous",
278 "facetious",
279 "fair",
280 "faithful",
281 "famous",
282 "fanciful",
283 "fancy",
284 "fantastic",
285 "fascinated",
286 "fashionable",
287 "fastidious",
288 "fearless",
289 "fearsome",
290 "feathered",
291 "feisty",
292 "feral",
293 "ferocious",
294 "fervent",
295 "festive",
296 "fickle",
297 "fierce",
298 "fiery",
299 "firm",
300 "fishing",
301 "flabbergasted",
302 "flaky",
303 "flamboyant",
304 "flappy",
305 "flashy",
306 "flawless",
307 "flippant",
308 "floppy",
309 "flourishing",
310 "fluent",
311 "fluffy",
312 "flushed",
313 "flustered",
314 "fluttering",
315 "focused",
316 "fond",
317 "foolish",
318 "forgetful",
319 "forgiving",
320 "formal",
321 "formidable",
322 "forthright",
323 "fortunate",
324 "frank",
325 "frantic",
326 "freaky",
327 "frenzied",
328 "fresh",
329 "friendly",
330 "frightened",
331 "frilly",
332 "frisky",
333 "frivolous",
334 "frizzy",
335 "frosty",
336 "frugal",
337 "fruity",
338 "fuming",
339 "funky",
340 "funny",
341 "furious",
342 "furry",
343 "fussy",
344 "futuristic",
345 "fuzzy",
346 "gabby",
347 "galactic",
348 "gallant",
349 "gardening",
350 "gaudy",
351 "genial",
352 "genteel",
353 "gentle",
354 "genuine",
355 "ghostly",
356 "giddy",
357 "gifted",
358 "gigantic",
359 "giggling",
360 "gilded",
361 "glad",
362 "glamorous",
363 "gleaming",
364 "glib",
365 "glistening",
366 "glittering",
367 "glittery",
368 "gloomy",
369 "glorious",
370 "glossy",
371 "glowing",
372 "gnarly",
373 "gobsmacked",
374 "golden",
375 "good",
376 "goofy",
377 "gorgeous",
378 "gossiping",
379 "graceful",
380 "gracious",
381 "grand",
382 "grandiose",
383 "grateful",
384 "greedy",
385 "gregarious",
386 "grinning",
387 "gritty",
388 "groggy",
389 "groovy",
390 "grouchy",
391 "grubby",
392 "gruff",
393 "grumbling",
394 "grumpy",
395 "guarded",
396 "gullible",
397 "gushing",
398 "gusty",
399 "gutsy",
400 "haggard",
401 "hairy",
402 "handsome",
403 "handy",
404 "hapless",
405 "happy",
406 "hardworking",
407 "hardy",
408 "harmonious",
409 "hasty",
410 "haughty",
411 "hearty",
412 "heavenly",
413 "hectic",
414 "hefty",
415 "helpful",
416 "heroic",
417 "hesitant",
418 "hilarious",
419 "hollering",
420 "honest",
421 "honorable",
422 "hopeful",
423 "hopping",
424 "hospitable",
425 "humble",
426 "humming",
427 "humorous",
428 "hungry",
429 "hurried",
430 "hushed",
431 "hyper",
432 "hypnotic",
433 "hysterical",
434 "icy",
435 "idealistic",
436 "idle",
437 "illustrious",
438 "imaginative",
439 "immaculate",
440 "immense",
441 "impartial",
442 "impatient",
443 "impeccable",
444 "imperious",
445 "impetuous",
446 "impressive",
447 "impulsive",
448 "incredible",
449 "indignant",
450 "indomitable",
451 "industrious",
452 "ingenious",
453 "innocent",
454 "innovative",
455 "inquisitive",
456 "insightful",
457 "insistent",
458 "inspired",
459 "intense",
460 "intrepid",
461 "intrigued",
462 "intuitive",
463 "inventive",
464 "invincible",
465 "irate",
466 "irresistible",
467 "irreverent",
468 "itchy",
469 "jaded",
470 "jaunty",
471 "jazzy",
472 "jealous",
473 "jittery",
474 "jogging",
475 "jolly",
476 "jovial",
477 "joyful",
478 "joyous",
479 "jubilant",
480 "judicious",
481 "juggling",
482 "jumbo",
483 "jumpy",
484 "keen",
485 "kind",
486 "kindly",
487 "knitting",
488 "knowing",
489 "knowledgeable",
490 "kooky",
491 "languid",
492 "lanky",
493 "laughing",
494 "lavish",
495 "lawful",
496 "lazy",
497 "leaping",
498 "learned",
499 "legendary",
500 "leisurely",
501 "lethargic",
502 "lighthearted",
503 "likable",
504 "listless",
505 "literate",
506 "lively",
507 "lofty",
508 "lonely",
509 "lonesome",
510 "loony",
511 "loopy",
512 "loud",
513 "lounging",
514 "lovable",
515 "loving",
516 "loyal",
517 "lucid",
518 "lucky",
519 "ludicrous",
520 "lumbering",
521 "luminous",
522 "lumpy",
523 "lurking",
524 "lustrous",
525 "magical",
526 "magnanimous",
527 "magnetic",
528 "magnificent",
529 "majestic",
530 "marching",
531 "marvelous",
532 "masterful",
533 "meandering",
534 "meditating",
535 "meditative",
536 "meek",
537 "melancholy",
538 "mellow",
539 "melodramatic",
540 "memorable",
541 "menacing",
542 "merciful",
543 "merry",
544 "mesmerizing",
545 "messy",
546 "meticulous",
547 "mighty",
548 "mindful",
549 "miniature",
550 "mischievous",
551 "misty",
552 "modern",
553 "modest",
554 "momentous",
555 "monstrous",
556 "moody",
557 "motivated",
558 "mournful",
559 "muddled",
560 "muddy",
561 "muffled",
562 "mumbling",
563 "munching",
564 "mundane",
565 "muscular",
566 "musical",
567 "musing",
568 "muttering",
569 "mysterious",
570 "mystical",
571 "mythical",
572 "naive",
573 "napping",
574 "natty",
575 "naughty",
576 "nautical",
577 "neat",
578 "needy",
579 "nerdy",
580 "nervous",
581 "neurotic",
582 "nibbling",
583 "nifty",
584 "nimble",
585 "noble",
586 "nocturnal",
587 "noisy",
588 "nomadic",
589 "nonchalant",
590 "nostalgic",
591 "nosy",
592 "notable",
593 "notorious",
594 "nurturing",
595 "nutty",
596 "obedient",
597 "obliging",
598 "oblivious",
599 "obnoxious",
600 "observant",
601 "obsessive",
602 "obstinate",
603 "odd",
604 "offbeat",
605 "omnipotent",
606 "opinionated",
607 "optimistic",
608 "opulent",
609 "orderly",
610 "organized",
611 "ornate",
612 "outgoing",
613 "outlandish",
614 "outspoken",
615 "overjoyed",
616 "overwhelmed",
617 "overzealous",
618 "painstaking",
619 "panicky",
620 "paranoid",
621 "parched",
622 "passionate",
623 "patient",
624 "peaceful",
625 "peculiar",
626 "pensive",
627 "peppy",
628 "perfect",
629 "perky",
630 "perplexed",
631 "persistent",
632 "persuasive",
633 "pert",
634 "perturbed",
635 "petite",
636 "petulant",
637 "philosophical",
638 "picky",
639 "pious",
640 "placid",
641 "playful",
642 "pleasant",
643 "pleased",
644 "plotting",
645 "plucky",
646 "plump",
647 "poetic",
648 "poised",
649 "polished",
650 "polite",
651 "pompous",
652 "pondering",
653 "popular",
654 "posh",
655 "positive",
656 "pouting",
657 "powerful",
658 "pragmatic",
659 "prancing",
660 "precious",
661 "precise",
662 "prestigious",
663 "pretentious",
664 "pretty",
665 "prickly",
666 "prim",
667 "primal",
668 "princely",
669 "prodigious",
670 "productive",
671 "profound",
672 "prolific",
673 "prominent",
674 "prompt",
675 "proper",
676 "prosperous",
677 "protective",
678 "proud",
679 "prudent",
680 "puffy",
681 "punctual",
682 "pungent",
683 "puny",
684 "purple",
685 "purring",
686 "pushy",
687 "puzzled",
688 "quaint",
689 "qualified",
690 "quantum",
691 "queasy",
692 "quick",
693 "quiet",
694 "quirky",
695 "quivering",
696 "radiant",
697 "radioactive",
698 "ragged",
699 "rambling",
700 "rampaging",
701 "rare",
702 "raspy",
703 "rattled",
704 "raucous",
705 "ravenous",
706 "rebellious",
707 "reckless",
708 "refined",
709 "regal",
710 "relaxed",
711 "reliable",
712 "reluctant",
713 "remarkable",
714 "renowned",
715 "reserved",
716 "resilient",
717 "resolute",
718 "resourceful",
719 "respectable",
720 "resplendent",
721 "responsible",
722 "restless",
723 "retired",
724 "revered",
725 "rhythmic",
726 "ridiculous",
727 "righteous",
728 "riotous",
729 "robotic",
730 "robust",
731 "romantic",
732 "rosy",
733 "rousing",
734 "rowdy",
735 "ruffled",
736 "rugged",
737 "rustic",
738 "sailing",
739 "saintly",
740 "salty",
741 "sanguine",
742 "sarcastic",
743 "sardonic",
744 "sassy",
745 "satisfied",
746 "saucy",
747 "savvy",
748 "scarlet",
749 "scheming",
750 "scholarly",
751 "scintillating",
752 "scrappy",
753 "scrawny",
754 "scruffy",
755 "scrumptious",
756 "scurrying",
757 "secretive",
758 "sedate",
759 "selfless",
760 "sensational",
761 "sensible",
762 "sensitive",
763 "sentimental",
764 "serene",
765 "serious",
766 "shabby",
767 "shaggy",
768 "shaky",
769 "shimmering",
770 "shiny",
771 "shivering",
772 "shocked",
773 "showy",
774 "shrewd",
775 "shrill",
776 "shuffling",
777 "shy",
778 "silly",
779 "silver",
780 "sincere",
781 "singing",
782 "sizzling",
783 "skateboarding",
784 "skating",
785 "skeptical",
786 "skiing",
787 "skillful",
788 "skipping",
789 "skittish",
790 "skydiving",
791 "sleek",
792 "sleepwalking",
793 "sleepy",
794 "slender",
795 "slick",
796 "slimy",
797 "slinky",
798 "slippery",
799 "sloppy",
800 "sluggish",
801 "smart",
802 "smiling",
803 "smirking",
804 "smooth",
805 "smug",
806 "snacking",
807 "snappy",
808 "snarky",
809 "snarling",
810 "snazzy",
811 "sneaky",
812 "sneezing",
813 "sniffing",
814 "snobbish",
815 "snooty",
816 "snoring",
817 "snorkeling",
818 "snorting",
819 "snug",
820 "sober",
821 "sociable",
822 "soft",
823 "soggy",
824 "solemn",
825 "somber",
826 "soothing",
827 "sophisticated",
828 "sparkling",
829 "sparkly",
830 "speckled",
831 "spectacular",
832 "speechless",
833 "speedy",
834 "spellbound",
835 "spicy",
836 "spiky",
837 "spinning",
838 "spirited",
839 "splendid",
840 "spontaneous",
841 "sporty",
842 "spotless",
843 "spotted",
844 "spotty",
845 "sprawling",
846 "spry",
847 "spunky",
848 "squabbling",
849 "squeaky",
850 "squealing",
851 "squinting",
852 "squishy",
853 "startled",
854 "stately",
855 "staunch",
856 "steadfast",
857 "stealthy",
858 "sticky",
859 "stinky",
860 "stocky",
861 "stoic",
862 "stomping",
863 "stormy",
864 "stout",
865 "strange",
866 "strapping",
867 "striking",
868 "striped",
869 "strolling",
870 "strutting",
871 "stubborn",
872 "studious",
873 "stunning",
874 "sturdy",
875 "stylish",
876 "suave",
877 "subtle",
878 "successful",
879 "sunbathing",
880 "sunny",
881 "superb",
882 "supersonic",
883 "supreme",
884 "surfing",
885 "surly",
886 "surprised",
887 "suspicious",
888 "swanky",
889 "swaying",
890 "sweaty",
891 "sweet",
892 "swift",
893 "swimming",
894 "sympathetic",
895 "tactful",
896 "talented",
897 "talkative",
898 "tame",
899 "tangled",
900 "tardy",
901 "tasteful",
902 "tattered",
903 "tearful",
904 "tedious",
905 "teeny",
906 "teetering",
907 "temperamental",
908 "tenacious",
909 "tender",
910 "tense",
911 "terrific",
912 "testy",
913 "thankful",
914 "theatrical",
915 "thirsty",
916 "thoughtful",
917 "thrifty",
918 "thrilled",
919 "thundering",
920 "ticklish",
921 "tidy",
922 "timid",
923 "tinkering",
924 "tiny",
925 "tired",
926 "tireless",
927 "tolerant",
928 "touchy",
929 "tough",
930 "tranquil",
931 "trembling",
932 "tremendous",
933 "trendy",
934 "tricky",
935 "trim",
936 "triumphant",
937 "trotting",
938 "trusting",
939 "trustworthy",
940 "truthful",
941 "tubby",
942 "tumbling",
943 "turbocharged",
944 "turbulent",
945 "twinkling",
946 "twirling",
947 "twitchy",
948 "ultimate",
949 "unassuming",
950 "unbeatable",
951 "uncanny",
952 "undaunted",
953 "understanding",
954 "unflinching",
955 "unique",
956 "unkempt",
957 "unlucky",
958 "unpredictable",
959 "unstoppable",
960 "upbeat",
961 "useful",
962 "vacant",
963 "vain",
964 "valiant",
965 "velvety",
966 "venerable",
967 "versatile",
968 "vexed",
969 "vibrant",
970 "victorious",
971 "vigilant",
972 "vigorous",
973 "villainous",
974 "virtuous",
975 "visionary",
976 "vivacious",
977 "vocal",
978 "volatile",
979 "voracious",
980 "wacky",
981 "wailing",
982 "wandering",
983 "wary",
984 "wayward",
985 "wealthy",
986 "weary",
987 "weird",
988 "welcoming",
989 "wheezing",
990 "whimsical",
991 "whiny",
992 "whirling",
993 "whispering",
994 "whistling",
995 "wholesome",
996 "wicked",
997 "wiggling",
998 "wild",
999 "willful",
1000 "wily",
1001 "winged",
1002 "winking",
1003 "wintry",
1004 "wiry",
1005 "wise",
1006 "wistful",
1007 "withdrawn",
1008 "witty",
1009 "wobbling",
1010 "wobbly",
1011 "woeful",
1012 "wonderful",
1013 "wondering",
1014 "wondrous",
1015 "woolly",
1016 "wordy",
1017 "worldly",
1018 "worried",
1019 "worthy",
1020 "yawning",
1021 "yearning",
1022 "young",
1023 "youthful",
1024 "zany",
1025 "zealous",
1026 "zen",
1027 "zippy",
1028];
1029
1030const ANIMALS: &[&str] = &[
1031 "abalone",
1032 "adder",
1033 "adjutant",
1034 "albatross",
1035 "alligator",
1036 "alpaca",
1037 "anaconda",
1038 "anchovy",
1039 "anemone",
1040 "ant",
1041 "antelope",
1042 "armadillo",
1043 "baboon",
1044 "badger",
1045 "bandicoot",
1046 "barnacle",
1047 "barracuda",
1048 "bass",
1049 "bat",
1050 "beagle",
1051 "bear",
1052 "beaver",
1053 "bee",
1054 "beetle",
1055 "beluga",
1056 "betta",
1057 "bison",
1058 "blackbird",
1059 "bloodhound",
1060 "bluebird",
1061 "boa",
1062 "boar",
1063 "bobcat",
1064 "bongo",
1065 "bonito",
1066 "bream",
1067 "buffalo",
1068 "bull",
1069 "bulldog",
1070 "bullock",
1071 "bumblebee",
1072 "bunny",
1073 "bunting",
1074 "butterfly",
1075 "buzzard",
1076 "calf",
1077 "camel",
1078 "canary",
1079 "cardinal",
1080 "caribou",
1081 "carp",
1082 "cat",
1083 "caterpillar",
1084 "catfish",
1085 "centipede",
1086 "chameleon",
1087 "cheetah",
1088 "chick",
1089 "chicken",
1090 "chihuahua",
1091 "chimpanzee",
1092 "chinchilla",
1093 "chipmunk",
1094 "chow",
1095 "chub",
1096 "clam",
1097 "cobra",
1098 "cockatoo",
1099 "cockroach",
1100 "cod",
1101 "collie",
1102 "colt",
1103 "conch",
1104 "condor",
1105 "coot",
1106 "coral",
1107 "corgi",
1108 "cougar",
1109 "cow",
1110 "coyote",
1111 "crab",
1112 "crane",
1113 "crawfish",
1114 "crayfish",
1115 "cricket",
1116 "crocodile",
1117 "crow",
1118 "cub",
1119 "cuckoo",
1120 "cuttlefish",
1121 "dachshund",
1122 "dalmatian",
1123 "deer",
1124 "dingo",
1125 "dipper",
1126 "doberman",
1127 "dodo",
1128 "dog",
1129 "dolphin",
1130 "donkey",
1131 "dorado",
1132 "dove",
1133 "dragonfly",
1134 "drake",
1135 "duck",
1136 "duckling",
1137 "eagle",
1138 "eel",
1139 "elephant",
1140 "elk",
1141 "emu",
1142 "ewe",
1143 "falcon",
1144 "fawn",
1145 "ferret",
1146 "filly",
1147 "finch",
1148 "firefly",
1149 "fisher",
1150 "flamingo",
1151 "flea",
1152 "flounder",
1153 "fly",
1154 "foal",
1155 "fossa",
1156 "fox",
1157 "frog",
1158 "gander",
1159 "gar",
1160 "gazelle",
1161 "gecko",
1162 "gibbon",
1163 "giraffe",
1164 "gnu",
1165 "goat",
1166 "goldfish",
1167 "goose",
1168 "gopher",
1169 "gorilla",
1170 "gosling",
1171 "grasshopper",
1172 "grayling",
1173 "grenadier",
1174 "greyhound",
1175 "grouper",
1176 "grouse",
1177 "gull",
1178 "haddock",
1179 "halibut",
1180 "hammerhead",
1181 "hamster",
1182 "hare",
1183 "harrier",
1184 "hawk",
1185 "hedgehog",
1186 "heifer",
1187 "hen",
1188 "heron",
1189 "herring",
1190 "hippo",
1191 "hippopotamus",
1192 "hog",
1193 "honeybee",
1194 "hornet",
1195 "horse",
1196 "hummingbird",
1197 "humpback",
1198 "husky",
1199 "hyena",
1200 "ibis",
1201 "iguana",
1202 "impala",
1203 "jackal",
1204 "jaguar",
1205 "jay",
1206 "jellyfish",
1207 "joey",
1208 "kaka",
1209 "kangaroo",
1210 "kea",
1211 "kingfisher",
1212 "kite",
1213 "kitten",
1214 "kiwi",
1215 "koala",
1216 "koi",
1217 "krill",
1218 "ladybird",
1219 "ladybug",
1220 "lamb",
1221 "lark",
1222 "leech",
1223 "lemur",
1224 "leopard",
1225 "lion",
1226 "lizard",
1227 "llama",
1228 "lobster",
1229 "locust",
1230 "loon",
1231 "lynx",
1232 "mackerel",
1233 "magpie",
1234 "mako",
1235 "mallard",
1236 "mamba",
1237 "mammoth",
1238 "manatee",
1239 "manta",
1240 "mantis",
1241 "manx",
1242 "mara",
1243 "mare",
1244 "marlin",
1245 "marten",
1246 "martin",
1247 "mastiff",
1248 "mastodon",
1249 "merlin",
1250 "mink",
1251 "minnow",
1252 "mite",
1253 "mockingbird",
1254 "mole",
1255 "molly",
1256 "mongoose",
1257 "monkey",
1258 "moose",
1259 "mosquito",
1260 "moth",
1261 "mouse",
1262 "mule",
1263 "mullet",
1264 "mussel",
1265 "mustang",
1266 "nautilus",
1267 "newt",
1268 "nighthawk",
1269 "nightingale",
1270 "octopus",
1271 "orangutan",
1272 "orca",
1273 "oryx",
1274 "osprey",
1275 "ostrich",
1276 "otter",
1277 "owl",
1278 "ox",
1279 "oyster",
1280 "panda",
1281 "panther",
1282 "papillon",
1283 "parrot",
1284 "partridge",
1285 "peacock",
1286 "pelican",
1287 "penguin",
1288 "perch",
1289 "peregrine",
1290 "pheasant",
1291 "phoebe",
1292 "pig",
1293 "pigeon",
1294 "piglet",
1295 "pika",
1296 "pike",
1297 "piranha",
1298 "platypus",
1299 "plover",
1300 "pollack",
1301 "pollock",
1302 "pomeranian",
1303 "pony",
1304 "poodle",
1305 "porcupine",
1306 "porpoise",
1307 "possum",
1308 "prawn",
1309 "puffin",
1310 "pug",
1311 "puma",
1312 "puppy",
1313 "python",
1314 "quail",
1315 "rabbit",
1316 "raccoon",
1317 "rail",
1318 "ram",
1319 "rat",
1320 "rattlesnake",
1321 "raven",
1322 "reindeer",
1323 "retriever",
1324 "rhea",
1325 "rhino",
1326 "rhinoceros",
1327 "robin",
1328 "rook",
1329 "rooster",
1330 "rottweiler",
1331 "ruff",
1332 "sable",
1333 "salamander",
1334 "salmon",
1335 "sardine",
1336 "scallop",
1337 "scorpion",
1338 "screamer",
1339 "seagull",
1340 "seahorse",
1341 "seal",
1342 "shad",
1343 "shark",
1344 "sheep",
1345 "shrew",
1346 "shrimp",
1347 "skate",
1348 "skunk",
1349 "sloth",
1350 "slug",
1351 "smelt",
1352 "snail",
1353 "snake",
1354 "snapper",
1355 "snipe",
1356 "sole",
1357 "sow",
1358 "spaniel",
1359 "sparrow",
1360 "spider",
1361 "sponge",
1362 "springbok",
1363 "squid",
1364 "squirrel",
1365 "stallion",
1366 "starfish",
1367 "starling",
1368 "steer",
1369 "stingray",
1370 "stork",
1371 "sturgeon",
1372 "swallow",
1373 "swan",
1374 "swift",
1375 "swine",
1376 "swordfish",
1377 "tabby",
1378 "tadpole",
1379 "takin",
1380 "tapeworm",
1381 "tarantula",
1382 "teal",
1383 "termite",
1384 "tern",
1385 "terrier",
1386 "tetra",
1387 "thrasher",
1388 "thrush",
1389 "tiger",
1390 "tilapia",
1391 "toad",
1392 "tomcat",
1393 "tortoise",
1394 "trout",
1395 "trumpeter",
1396 "tui",
1397 "tuna",
1398 "turkey",
1399 "turtle",
1400 "urchin",
1401 "viper",
1402 "vole",
1403 "vulture",
1404 "wahoo",
1405 "wallaby",
1406 "walleye",
1407 "walrus",
1408 "warbler",
1409 "wasp",
1410 "weasel",
1411 "weevil",
1412 "whale",
1413 "wildebeest",
1414 "wolf",
1415 "wolverine",
1416 "wombat",
1417 "woodcock",
1418 "woodpecker",
1419 "worm",
1420 "wren",
1421 "yak",
1422 "zander",
1423 "zebra",
1424];
1425
1426pub fn get_random(mut rng: impl rand_core::Rng) -> String {
1429 let num = rng.next_u64() % 1000;
1430 let adj = ADJECTIVES[(rng.next_u64() % ADJECTIVES.len() as u64) as usize];
1431 let animal = ANIMALS[(rng.next_u64() % ANIMALS.len() as u64) as usize];
1432
1433 format!("{adj}-{animal}-{:03}", num)
1434}
1435
1436#[cfg(test)]
1437mod tests {
1438 use std::collections::HashSet;
1439
1440 use rand::rng;
1441
1442 use super::*;
1443
1444 #[test]
1445 fn test_ends_with_three_digit_num() {
1446 let mut rng = rng();
1447 let name = get_random(&mut rng);
1448
1449 assert_eq!(name.split('-').count(), 3);
1450 assert_eq!(name.split('-').next_back().unwrap().len(), 3);
1451 }
1452
1453 #[test]
1454 fn test_at_least_400_million_combinations() {
1455 let combinations = ADJECTIVES.len() * ANIMALS.len() * 1000;
1456 assert!(
1457 combinations >= 400_000_000,
1458 "only {combinations} combinations"
1459 );
1460 }
1461
1462 #[test]
1463 fn test_words_are_unique_lowercase_letters() {
1464 for list in [ADJECTIVES, ANIMALS] {
1465 assert_eq!(list.iter().collect::<HashSet<_>>().len(), list.len());
1466 assert!(
1467 list.iter()
1468 .all(|w| !w.is_empty() && w.bytes().all(|b| b.is_ascii_lowercase()))
1469 );
1470 }
1471 }
1472}