1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use crate::{error::*, file_type::FileType}; use std::path::{Path, PathBuf}; #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct File { pub path: PathBuf, pub file_type: FileType, } impl File { pub fn new(path: PathBuf, file_type: FileType) -> Self { File { path, file_type } } pub fn from_path(path: impl AsRef<Path>, follow_symlinks: bool) -> Result<Self> { let file_type = FileType::from_path(&path, follow_symlinks)?; let path = path.as_ref().to_path_buf(); let result = File::new(path, file_type); Ok(result) } }