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