use {
crate::FileSize,
std::{fs::File, io, path::PathBuf},
};
#[derive(Debug)]
pub struct FileInfo {
pub file: File,
pub path: PathBuf,
pub size: FileSize,
}
impl FileInfo {
pub fn new_from_path(path: impl Into<PathBuf>) -> io::Result<Self> {
let path = path.into();
let file = File::open(&path)?;
Self::new_from_path_and_file(path, file)
}
pub fn new_from_path_and_file(path: impl Into<PathBuf>, file: File) -> io::Result<Self> {
let size = file.metadata()?.len();
Ok(Self {
path: path.into(),
size,
file,
})
}
}