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
28
use std::fs::File;
use std::{io, io::Read};
use std::path::Path;
use std::str;

pub fn get_filename<S: AsRef<str>>(filename: S) -> Option<String> {
    match Path::new(filename.as_ref()).file_name() {
        Some(file_name) => match file_name.to_str() {
            Some(file_name) => Some(file_name.into()),
            None => None,
        },
        None => None,
    }
}

pub fn read_file_buf<S: AsRef<str>>(path: S) -> Result<Vec<u8>, io::Error> {
    let path = Path::new(path.as_ref());

    let mut buffer = Vec::new();
    File::open(&path)?.read_to_end(&mut buffer).map(|_| buffer)
}

pub fn read_file_string<S: AsRef<str>>(path: S) -> Result<String, io::Error> {
    let path = Path::new(path.as_ref());

    let mut buffer = String::new();
    File::open(&path)?.read_to_string(&mut buffer).map(|_| buffer)
}