gen_file/
folder.rs

1use std::fs;
2use std::io;
3use std::path::PathBuf;
4
5pub fn get_folder_filename_list(folder_name: &PathBuf) -> io::Result<Vec<String>> {
6    let paths: fs::ReadDir = fs::read_dir(folder_name)
7        .map_err(|e| io::Error::new(e.kind(), format!("Failed to read folder {}: {}", folder_name.display(), e)))?;
8
9    let mut file_name_list = Vec::new();
10
11    for entry in paths {
12        let path = entry
13            .map_err(|e| io::Error::new(e.kind(), format!("Failed to iterate entry in {}: {}", folder_name.display(), e)))?
14            .path();
15        file_name_list.push(path.display().to_string());
16    }
17
18    Ok(file_name_list)
19}
20
21pub fn create(path: &PathBuf) -> io::Result<()> {
22    fs::create_dir_all(path)
23        .map_err(|e| io::Error::new(e.kind(), format!("Failed to create folder {}: {}", path.display(), e)))
24}
25
26pub fn remove_if_exists(path: &PathBuf) -> io::Result<()> {
27    if exists(path)? {
28        fs::remove_dir_all(path)
29            .map_err(|e| io::Error::new(e.kind(), format!("Failed to remove folder {}: {}", path.display(), e)))?;
30    }
31    Ok(())
32}
33
34pub fn exists(path: &PathBuf) -> io::Result<bool> {
35    let path_buf = PathBuf::from(path);
36    Ok(path_buf.exists())
37}
38
39#[cfg(test)]
40#[path = "../tests/unit_tests/folder.rs"]
41pub mod test;