pub struct SFile { /* private fields */ }
Expand description
An SFile can be constructed from a Path, io::DirEntry, or walkdir::DirEntry and guarantees the following:
- The entry is a file (exists).
- It has a file name.
- The full path is UTF-8 valid.
Implementations§
source§impl SFile
impl SFile
Constructors that guarantee the SFile contract described in the struct
sourcepub fn new(path: impl Into<PathBuf>) -> Result<Self>
pub fn new(path: impl Into<PathBuf>) -> Result<Self>
Constructor for SFile accepting anything that implements Into<&PathBuf>.
Note: This is quite ergonomic and allows for avoiding a PathBuf allocation if a PathBuf is provided.
sourcepub fn from_path(path: impl AsRef<Path>) -> Result<Self>
pub fn from_path(path: impl AsRef<Path>) -> Result<Self>
Constructor from File and all impl AsRef<&Path>.
Returns Result
Note: Prefers the use of the SPath::try_from(…) when available as it might avoid a PathBuf allocation.
sourcepub fn from_path_ok(path: impl AsRef<Path>) -> Option<Self>
pub fn from_path_ok(path: impl AsRef<Path>) -> Option<Self>
Constructors for anything that impl AsRef<&Path>.
Returns Option
Note: Favor using concrete type functions like SPath::from_path_buf_ok
when available.
sourcepub fn from_path_buf_ok(path_buf: PathBuf) -> Option<Self>
pub fn from_path_buf_ok(path_buf: PathBuf) -> Option<Self>
Constructors from PathBuf returning an Option, none if validation fails. Useful for filter_map.
sourcepub fn from_fs_entry_ok(fs_entry: DirEntry) -> Option<Self>
pub fn from_fs_entry_ok(fs_entry: DirEntry) -> Option<Self>
Constructor from fs::DirEntry returning an Option, none if validation fails. Useful for filter_map.
sourcepub fn from_walkdir_entry_ok(wd_entry: DirEntry) -> Option<Self>
pub fn from_walkdir_entry_ok(wd_entry: DirEntry) -> Option<Self>
Constructor from walkdir::DirEntry returning an Option, none if validation fails. Useful for filter_map.
source§impl SFile
impl SFile
Public file components as str methods.
sourcepub fn to_str(&self) -> &str
pub fn to_str(&self) -> &str
Returns the &str of the path.
NOTE: We know that this must be Some() since the SFile constructor guarantees that the path.to_str() is valid.
sourcepub fn file_name(&self) -> &str
pub fn file_name(&self) -> &str
Returns the &str representation of the file_name()
NOTE: According to the constructors’ contract, this method will never return “” as a file_name() is required for construction.
sourcepub fn file_stem(&self) -> &str
pub fn file_stem(&self) -> &str
Returns the &str representation of the file_stem().
NOTE: According to the constructors’ contract, this method will never return “” as a file_name() is required for construction, and stem is always part of it.
pub fn stem(&self) -> &str
sourcepub fn extension(&self) -> Option<&str>
pub fn extension(&self) -> Option<&str>
Returns the Option<&str> representation of the extension().
NOTE: This should never be a non-UTF-8 string as the path was validated during SFile construction.
sourcepub fn modified(&self) -> Result<SystemTime>
pub fn modified(&self) -> Result<SystemTime>
Returns the path.metadata modified as SystemTime.
sourcepub fn modified_us(&self) -> Result<i64>
pub fn modified_us(&self) -> Result<i64>
Returns the epoch duration in microseconds.
Note: The maximum UTC date would be approximately 292277-01-09 04:00:54 UTC
.
Thus, for all intents and purposes, it is far enough to not worry.
sourcepub fn file_size(&self) -> Result<i64>
pub fn file_size(&self) -> Result<i64>
Returns the file size in bytes as i64
.
Note: In the highly unlikely event that the size exceeds i64::MAX
,
i64::MAX
is returned. i64::MAX
represents 8,388,607 terabytes,
providing ample margin before it becomes a concern.
pub fn parent(&self) -> Option<SPath>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SFile
impl RefUnwindSafe for SFile
impl Send for SFile
impl Sync for SFile
impl Unpin for SFile
impl UnwindSafe for SFile
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)