rand_string/
lib.rs

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}