crystalsoft_utils/
lib.rs

1use std::fs::File;
2use std::{io, io::Read};
3use std::path::Path;
4use std::str;
5
6pub fn get_filepath<S: AsRef<str>>(file_path: S) -> Option<String> {
7    match Path::new(file_path.as_ref()).parent() {
8        Some(file_path) => match file_path.to_str() {
9            Some(file_path) => Some(file_path.into()),
10            None => None,
11        },
12        None => None,
13    }
14}
15
16pub fn get_filename<S: AsRef<str>>(file_name: S) -> Option<String> {
17    match Path::new(file_name.as_ref()).file_name() {
18        Some(file_name) => match file_name.to_str() {
19            Some(file_name) => Some(file_name.into()),
20            None => None,
21        },
22        None => None,
23    }
24}
25
26pub fn read_file_buf<S: AsRef<str>>(path: S) -> Result<Vec<u8>, io::Error> {
27    let path = Path::new(path.as_ref());
28
29    let mut buffer = Vec::new();
30    File::open(&path)?.read_to_end(&mut buffer).map(|_| buffer)
31}
32
33pub fn read_file_string<S: AsRef<str>>(path: S) -> Result<String, io::Error> {
34    let path = Path::new(path.as_ref());
35
36    let mut buffer = String::new();
37    File::open(&path)?.read_to_string(&mut buffer).map(|_| buffer)
38}