use std::ffi::OsString;
use std::fs::{FileType, Metadata};
use std::path::{Path, PathBuf};
#[derive(Debug, Clone)]
pub struct DirEntry {
path: PathBuf,
file_type: FileType,
metadata: Option<Metadata>,
}
impl DirEntry {
pub(crate) fn new(path: PathBuf, file_type: FileType, metadata: Option<Metadata>) -> Self {
Self {
path,
file_type,
metadata,
}
}
pub fn path(&self) -> &Path {
&self.path
}
pub fn into_path(self) -> PathBuf {
self.path
}
pub fn file_name(&self) -> OsString {
self.path
.file_name()
.map(|s| s.to_os_string())
.unwrap_or_default()
}
pub fn file_type(&self) -> FileType {
self.file_type
}
pub fn is_dir(&self) -> bool {
self.file_type.is_dir()
}
pub fn is_file(&self) -> bool {
self.file_type.is_file()
}
pub fn is_symlink(&self) -> bool {
self.file_type.is_symlink()
}
pub fn metadata(&self) -> Option<&Metadata> {
self.metadata.as_ref()
}
}