1use rand::seq::SliceRandom;
2use std::string::FromUtf8Error;
3
4const BASE_STR: &str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^";
5
6fn gen_string(size: usize) -> Result<String, FromUtf8Error> {
7 let mut rng = &mut rand::thread_rng();
8 let s = String::from_utf8(
9 BASE_STR
10 .as_bytes()
11 .choose_multiple(&mut rng, size)
12 .cloned()
13 .collect(),
14 )?;
15 Ok(s)
16}
17
18pub fn gen_rand_string(size: usize) -> Option<String> {
19 if size > 0 {
20 match gen_string(size) {
21 Ok(s) => Some(s),
22 _ => None,
23 }
24 } else {
25 panic!("Interger must be greater than 0");
26 }
27}