1
2pub mod do_username {
3 use rand::Rng;
4 fn to_title_case(s: &str) -> String {
5 let mut c = s.chars();
6 match c.next() {
7 None => String::new(),
8 Some(f) => f.to_uppercase().chain(c).collect(),
9 }
10 }
11
12 fn random(arr: Vec<&str>) -> &str {
13 let mut rng = rand::thread_rng();
14 let r = rng.gen_range(0, arr.len());
15 arr[r]
16 }
17 fn up_format(arr: Vec<&str>) -> String {
18 let mut new_arr = vec![];
19 for elem in arr {
20 new_arr.push(to_title_case(elem))
21 }
22 new_arr.join("")
23 }
24
25 pub fn get() -> String {
26 let sea_creatures = vec!["walrus", "seal", "fish", "shark", "clam", "coral", "whale", "crab", "lobster", "starfish", "eel", "dolphin", "squid", "jellyfish", "ray", "shrimp", "mantaRay", "angler", "snorkler", "scubaDiver", "urchin", "anemone", "morel", "axolotl"];
27 let sea_objects = vec!["boatShip", "submarine", "yacht", "dinghy", "raft", "kelp", "seaweed", "anchor"];
28 let adjectives = vec!["cute", "adorable", "lovable", "happy", "sandy", "bubbly", "friendly", "floating", "drifting"];
29 let mut size= vec!["large", "big", "small", "giant", "massive", "tiny", "little", "yuge"];
30 let mut verbs = vec!["swimming", "sleeping", "eating", "hiding"];
31 let colors = vec!["blue", "blueGreen", "darkCyan", "electricBlue", "greenBlue", "lightCyan", "lightSeaGreen", "seaGreen", "turquoise", "aqua", "aquamarine", "teal", "cyan", "gray", "darkBlue", "cerulean", "azure", "lapis", "navy"];
32
33 let mut sea_list = sea_objects;
34 let mut descriptors = adjectives;
35
36 sea_list.append(&mut sea_creatures.clone());
37 descriptors.append(&mut size);
38
39 let mut descriptors_and_verbs = descriptors.clone();
40 descriptors_and_verbs.append(&mut verbs);
41
42 let rand_noun = random(sea_list);
43 let rand_color = random(colors);
44
45 let rand_desc: &str;
46 if sea_creatures.contains(&rand_noun) {
47 rand_desc = random(descriptors_and_verbs);
48 } else {
49 rand_desc = random(descriptors);
50 }
51
52 if format!("{}{}{}", rand_desc, rand_color, rand_noun).len() <= 30 {
53 return up_format(vec![rand_desc, rand_color, rand_noun])
54 } else if format!("{}{}", rand_desc, rand_noun).len() <= 30 {
55 return up_format(vec![rand_desc, rand_noun])
56 } else if format!("{}{}", rand_color, rand_noun).len() <= 30 {
57 return up_format(vec![rand_color, rand_noun])
58 } else {
59 return up_format(vec![rand_noun])
60 }
61 }
62}