automaton

An automaton library & basic programs written in Rust
git clone git://git.ethandl.dev/automaton
Log | Files | Refs | README

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 }