pub static WORDS: [&str; 1024] = [
"ant", "ape", "asp", "bass", "bat", "bear", "bee", "bird",
"bison", "boar", "buck", "bull", "bunny", "calf", "camel", "carp",
"cat", "chick", "cobra", "colt", "cow", "crab", "crane", "crow",
"deer", "dog", "dove", "duck", "eagle", "eel", "elk", "ewe",
"falcon", "fawn", "ferret", "finch", "fish", "flea", "fly", "foal",
"fox", "frog", "gecko", "goat", "goose", "gopher", "grouse", "hare",
"hawk", "hen", "heron", "horse", "hound", "ibis", "iguana", "jaguar",
"kitten", "koala", "lamb", "lark", "lion", "lizard", "llama", "lynx",
"magpie", "mare", "marmot", "mink", "mole", "monkey", "moose", "moth",
"mouse", "mule", "newt", "ocelot", "orca", "otter", "owl", "panda",
"parrot", "perch", "pig", "pigeon", "pike", "pony", "poodle", "puma",
"puppy", "quail", "rabbit", "ram", "raven", "rhino", "robin", "salmon",
"seal", "shark", "sheep", "shrimp", "skunk", "sloth", "snail", "snake",
"spider", "squid", "stork", "swan", "tiger", "toad", "trout", "tuna",
"turkey", "turtle", "viper", "walrus", "wasp", "weasel", "whale", "wolf",
"worm", "yak", "zebra", "panther", "leopard", "jackal", "lemur", "ostrich",
"acre", "atoll", "bank", "bay", "beach", "berg", "bluff", "bog",
"branch", "brook", "burrow", "bush", "cabin", "cairn", "canal", "canyon",
"cape", "cave", "cliff", "cloud", "coast", "comet", "copse", "core",
"cosmos", "cove", "creek", "crest", "crust", "dale", "dawn", "delta",
"dome", "dune", "dusk", "earth", "eddy", "ember", "fall", "fern",
"field", "fjord", "flame", "flint", "flood", "flora", "fog", "forest",
"frost", "geode", "geyser", "glade", "globe", "grass", "grotto", "grove",
"gulch", "gulf", "gust", "harbor", "haze", "heath", "hedge", "hill",
"hilly", "icicle", "iris", "island", "isle", "jungle", "lagoon", "lake",
"leaf", "ledge", "light", "lily", "lobe", "log", "loon", "marsh",
"meadow", "mist", "moon", "moor", "moss", "mound", "mount", "mud",
"nebula", "oasis", "ocean", "orbit", "petal", "pier", "pine", "plain",
"planet", "plant", "plume", "pond", "pool", "rain", "ravine", "reef",
"ridge", "river", "rock", "rust", "sand", "sea", "shore", "sky",
"slope", "stone", "storm", "stream", "summit", "swamp", "tide", "tree",
"tundra", "valley", "vine", "volcano", "wave", "willow", "wind", "woods",
"april", "august", "autumn", "balmy", "blaze", "breeze", "bright", "calm",
"chill", "cinder", "clear", "cycle", "daily", "damp", "day", "decade",
"drift", "drop", "dry", "early", "ebb", "epoch", "era", "eve",
"flake", "flare", "flux", "frozen", "future", "gale", "gleam", "glow",
"hail", "heat", "hour", "humid", "ice", "icy", "june", "july",
"lull", "march", "may", "midday", "mild", "minute", "morn", "month",
"noon", "now", "ozone", "polar", "second", "shade", "sleet", "snow",
"snowy", "solar", "spring", "summer", "sunny", "thaw", "winter", "year",
"apple", "bagel", "bake", "baker", "basil", "bean", "beef", "beer",
"berry", "bread", "broth", "butter", "cabbage", "cake", "candy", "carrot",
"celery", "cherry", "chip", "cider", "cocoa", "coffee", "cookie", "corn",
"cream", "creamy", "crisp", "crust", "curry", "dairy", "date", "diet",
"dough", "dozen", "egg", "fennel", "fig", "fillet", "flake", "flour",
"food", "fork", "fries", "fruit", "fudge", "garlic", "ginger", "gourd",
"grain", "grape", "gravy", "grill", "grits", "ham", "herb", "honey",
"hops", "jam", "jar", "jelly", "juice", "kebab", "ketchup", "kettle",
"knife", "lager", "leek", "lemon", "lentil", "lime", "loaf", "lunch",
"mango", "maple", "meal", "meat", "melon", "milk", "mint", "muffin",
"mug", "mutton", "nacho", "noodle", "nougat", "nut", "oat", "olive",
"onion", "orange", "oven", "pancake", "papaya", "pasta", "patty", "peach",
"pear", "pecan", "pepper", "pickle", "pie", "pita", "pizza", "plate",
"plum", "pork", "potato", "prawn", "pudding", "quiche", "radish", "raisin",
"ramen", "raspberry", "ravioli", "rice", "roast", "roll", "rosemary", "saffron",
"sage", "salad", "salami", "salt", "samosa", "sauce", "sausage", "scone",
"alarm", "attic", "awning", "axe", "basket", "bath", "bed", "bell",
"bench", "bin", "blade", "blinds", "board", "bolt", "bone", "book",
"bottle", "bowl", "box", "broom", "brush", "bucket", "bulb", "bunk",
"cabinet", "candle", "carpet", "case", "cellar", "ceiling", "chair", "clock",
"closet", "clothes", "coat", "couch", "crate", "crib", "cup", "curtain",
"cushion", "deck", "den", "desk", "dial", "diner", "dish", "door",
"drawer", "duvet", "fan", "fence", "fender", "filter", "fixture", "floor",
"frame", "fridge", "fuse", "garage", "garden", "gate", "glass", "guest",
"hall", "hammer", "handle", "hanger", "hat", "hearth", "hinge", "home",
"hose", "hut", "iron", "jacket", "kennel", "key", "kit", "kitchen",
"kite", "knob", "lab", "ladder", "lamp", "latch", "lawn", "level",
"lid", "lock", "loft", "lounge", "mailbox", "mantel", "mat", "mirror",
"anvil", "auger", "bar", "battery", "bead", "belt", "blade", "block",
"brick", "bridge", "brush", "buckle", "cable", "can", "canvas", "cap",
"card", "cart", "carve", "cement", "chain", "chalk", "chip", "chisel",
"clamp", "clay", "clip", "cloth", "clue", "coil", "comb", "cord",
"cork", "crank", "crow", "cube", "cutter", "die", "drill", "drum",
"dye", "edge", "engine", "fabric", "factory", "felt", "fiber", "file",
"flag", "flask", "float", "flute", "foam", "foil", "frame", "fuel",
"gear", "glove", "glue", "gold", "gravel", "grease", "grid", "grit",
"groove", "gum", "harness", "hatchet", "helmet", "hinge", "hoe", "hook",
"hoop", "jet", "joint", "kiln", "knot", "label", "lace", "ladder",
"lance", "lever", "lift", "lime", "lining", "logo", "loop", "magnet",
"mallet", "metal", "motor", "nail", "needle", "net", "nut", "panel",
"anklet", "apron", "armor", "arm", "back", "badge", "band", "beanie",
"beard", "blouse", "boot", "bow", "brace", "braid", "brim", "brooch",
"button", "cape", "cheek", "chest", "chin", "cloak", "collar", "cotton",
"crown", "cuff", "denim", "derby", "dress", "ear", "elbow", "eye",
"face", "feet", "finger", "fleece", "foot", "frill", "fringe", "garb",
"garter", "gown", "hair", "hand", "head", "heart", "heel", "hem",
"hip", "hood", "horn", "jeans", "jewel", "kilt", "knee", "lapel",
"leg", "linen", "lip", "loafer", "mantle", "mask", "mitten", "muff",
"nape", "neck", "nose", "outfit", "palm", "pants", "parka", "patch",
"pearl", "pin", "plait", "pocket", "purse", "rib", "ring", "robe",
"ruff", "sash", "scarf", "shawl", "shin", "shirt", "shoe", "shorts",
"shoulder", "skin", "skirt", "sleeve", "slip", "slipper", "smock", "sneaker",
"actor", "album", "art", "ballad", "ballet", "banjo", "bass", "beat",
"blues", "brass", "bugle", "cameo", "carol", "cello", "chant", "chess",
"chime", "choir", "chord", "circus", "clarinet", "club", "coin", "color",
"comic", "concert", "craft", "crayon", "cymbal", "dance", "demo", "diary",
"drama", "easel", "echo", "elegy", "encore", "epic", "essay", "fable",
"fest", "fiction", "film", "folk", "forte", "fresco", "fugue", "game",
"genre", "gig", "graph", "guitar", "harp", "hero", "hobby", "hymn",
"icon", "idea", "image", "ink", "issue", "jazz", "jest", "joke",
"agent", "anchor", "angel", "archer", "arena", "army", "arrow", "athlete",
"auto", "ball", "barge", "baron", "boat", "bowler", "boxer", "brave",
"bus", "cab", "cabby", "cadet", "camp", "canoe", "captain", "car",
"cargo", "cart", "catch", "chalet", "champ", "chase", "chief", "clerk",
"climb", "coach", "court", "cowboy", "cricket", "cross", "crowd", "crew",
"cycle", "darts", "dealer", "diver", "doctor", "donkey", "driver", "earl",
"eight", "envoy", "epee", "exit", "ferry", "fielder", "fight", "first",
"fleet", "flight", "forge", "forward", "freight", "general", "genius", "glider",
"acorn", "amber", "ash", "aspen", "birch", "bloom", "blossom", "bud",
"cactus", "cedar", "clover", "cone", "daisy", "elm", "fir", "gourd",
"hazel", "ivy", "jade", "lilac", "lotus", "marigold", "mossy", "myrtle",
"nettle", "nut", "oak", "orchid", "palm", "pansy", "peony", "petal",
"pine", "poppy", "primrose", "redwood", "reed", "rose", "rue", "sapling",
"sequoia", "shrub", "spruce", "stem", "sunflower", "thistle", "thorn", "thyme",
"tulip", "twig", "vine", "violet", "willow", "wisteria", "yew", "yucca",
"zinnia", "almond", "anise", "apricot", "avocado", "banana", "barley", "blueberry",
"abbey", "alley", "arch", "aruba", "asia", "atlas", "barn", "barrier",
"basin", "bazaar", "borough", "boulevard", "bridge", "burgh", "byway", "capital",
"castle", "cathedral", "channel", "chapel", "church", "city", "civic", "colony",
"compound", "cosmos", "country", "county", "crater", "creek", "csay", "darial",
"depot", "district", "domain", "downtown", "dwelling", "earth", "estate", "europe",
"fair", "farm", "fortress", "globe", "habitat", "hamlet", "haven", "highway",
"homeland", "horizon", "house", "hub", "inlet", "junction", "kingdom", "land",
"lane", "library", "manor", "market", "metro", "minaret", "monastery", "mosque",
"abacus", "ability", "accent", "access", "accord", "action", "active", "adage",
"adept", "adult", "advice", "agency", "agile", "agony", "alibi", "allure",
"amulet", "anthem", "apex", "appeal", "ardor", "armrest", "asset", "auction",
"audit", "author", "avail", "avenue", "average", "balance", "ballot", "balm",
];
#[cfg(test)]
mod tests {
use super::WORDS;
use std::collections::HashSet;
#[test]
fn wordlist_length_is_1024() {
assert_eq!(WORDS.len(), 1024);
}
#[test]
fn wordlist_words_are_lowercase_ascii() {
for w in WORDS.iter() {
assert!(
w.chars().all(|c| c.is_ascii_lowercase()),
"word {:?} is not lowercase ASCII",
w
);
}
}
#[test]
fn wordlist_word_lengths_in_range() {
for w in WORDS.iter() {
let len = w.len();
assert!(
(3..=10).contains(&len),
"word {:?} length {} outside expected 3..=10 range",
w,
len
);
}
}
#[test]
fn wordlist_has_minimal_duplicates() {
let unique: HashSet<&&str> = WORDS.iter().collect();
assert!(
unique.len() >= 950,
"wordlist has too many duplicates: {} unique out of 1024",
unique.len()
);
}
}