util.rs (1193B)
1 use rand::Rng; 2 use std::{ 3 collections::HashMap, 4 fs, 5 io::{self, ErrorKind}, 6 }; 7 8 pub fn read_directory(path: &str) -> io::Result<HashMap<String, String>> { 9 let dir = fs::read_dir(path)?; 10 11 let mut contents = HashMap::new(); 12 13 for entry in dir { 14 let entry = entry?; 15 let path = entry.path(); 16 17 if path.is_file() { 18 let file_name: String = path 19 .file_name() 20 .ok_or(io::Error::new(ErrorKind::Other, "Could not get filename"))? 21 .to_str() 22 .ok_or(io::Error::new( 23 ErrorKind::Other, 24 "could not convert filename os string to rust &str", 25 ))? 26 .to_owned(); 27 let file_content = fs::read_to_string(&path)?; 28 contents.insert(file_name, file_content); 29 } 30 } 31 32 Ok(contents) 33 } 34 35 pub fn rand_string(size: usize, alphabet: Vec<char>) -> String { 36 let mut rng = rand::thread_rng(); 37 (0..size) 38 .map(|_| { 39 alphabet 40 .get(rng.gen_range(0..alphabet.len())) 41 .expect("Unable to get random number in range!") 42 }) 43 .collect() 44 }