mldkyt_uwurandom_rs/
lib.rs

1//
2// Written by mldkyt
3// MIT license
4//
5pub struct Uwurandom {}
6
7impl Uwurandom {
8    fn abs(i: i32) -> i32 {
9        return if i < 0 { -i } else { i };
10    }
11    pub fn generate(num: i32) -> String {
12        let actions = [
13            "*tilts head*",
14            "*twitches ears slightly*",
15            "*purrs*",
16            "*falls asleep*",
17            "*sits on ur keyboard*",
18            "*nuzzles*",
19            "*stares at u*",
20            "*points towards case of monster zero ultra*",
21            "*sneezes*",
22            "*plays with yarn*",
23            "*eats all ur doritos*",
24            "*lies down on a random surface*",
25        ];
26        let nonsense = [
27            "aa", "am", "an", "ao", "eo", "ew", "me", "mr", "ny", "ow", "pp", "pu", "ra", "re",
28            "rm", "rn", "ro", "rp", "rw", "ur", "wm", "wn", "wp", "wr", "ww", "ya",
29        ];
30        let mut string = String::new();
31
32        while num > string.len() as i32 {
33            let random = Uwurandom::abs(rand::random::<i32>() % 10);
34            match random {
35                0 => {
36                    string.push_str("uwu");
37                }
38                1 => {
39                    let random_2 = Uwurandom::abs(rand::random::<i32>() % 21) + 5;
40                    for _ in 0..random_2 {
41                        let random_3 =
42                            Uwurandom::abs(rand::random::<i32>() % nonsense.len() as i32);
43                        string.push_str(nonsense[random_3 as usize]);
44                    }
45                }
46                2 => {
47                    let random_2 = Uwurandom::abs(rand::random::<i32>() % 4) + 3;
48                    string.push_str("ny");
49                    for _ in 0..random_2 {
50                        string.push_str("a");
51                    }
52
53                    string.push_str("~");
54                }
55                3 => {
56                    let random_2 = Uwurandom::abs(rand::random::<i32>() % 3) + 3;
57                    string.push_str(">");
58                    for _ in 0..random_2 {
59                        string.push_str("/");
60                    }
61
62                    string.push_str("<");
63                }
64                4 => {
65                    string.push_str(":3");
66                }
67                5 => {
68                    let random_2 = Uwurandom::abs(rand::random::<i32>() % actions.len() as i32);
69                    string.push_str(actions[random_2 as usize]);
70                }
71                6 => {
72                    let random_2 = Uwurandom::abs(rand::random::<i32>() % 21) + 5;
73                    for _ in 0..random_2 {
74                        let random_3 = char::from_u32(
75                            (Uwurandom::abs(rand::random::<i32>() % 26) + 97)
76                                .try_into()
77                                .unwrap(),
78                        )
79                        .unwrap();
80                        string.push_str(random_3.to_string().as_str());
81                    }
82                }
83                7 => {
84                    let random_2 = Uwurandom::abs(rand::random::<i32>() % 3) + 3;
85                    for _ in 0..random_2 {
86                        string.push_str("A");
87                    }
88                }
89                8 => {
90                    string.push_str("aw");
91                    let random_2 = Uwurandom::abs(rand::random::<i32>() % 21) + 5;
92                    for _ in 0..random_2 {
93                        let random_3 = char::from_u32(
94                            (Uwurandom::abs(rand::random::<i32>() % 26) + 97)
95                                .try_into()
96                                .unwrap(),
97                        )
98                        .unwrap();
99                        string.push_str(random_3.to_string().as_str());
100                    }
101                }
102                9 => {
103                    string.push_str("owo");
104                }
105                default => {
106                    panic!(
107                        "uwurandom::generate() the condition {} should never happen",
108                        default
109                    )
110                }
111            }
112
113            string.push_str(" ");
114        }
115
116        return string;
117    }
118}