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 implements 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>
Constructor 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) -> Option<&str>
pub fn file_name(&self) -> Option<&str>
Returns the Option<&str> representation of the path.file_name()
Note: if the OsStr cannot be made into utf8 will be None
Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Returns the &str representation of the path.file_name()
Note: If no file name (e.g., ./) or OsStr no utf8, will be empty string
Sourcepub fn file_stem(&self) -> Option<&str>
pub fn file_stem(&self) -> Option<&str>
Returns the Option<&str> representation of the file_stem()
Note: if the OsStr cannot be made into utf8 will be None
Sourcepub fn stem(&self) -> &str
pub fn stem(&self) -> &str
Returns the &str representation of the file_name()
Note: If no file name (e.g., ./) or OsStr no utf8, will be empty string
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 not to 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.
Sourcepub fn parent(&self) -> Option<SPath>
pub fn parent(&self) -> Option<SPath>
Returns the parent directory as SPath, if available.
If the SFile has a parent directory, converts it to SPath and returns.
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)