refactor(fs): use type aliases
This commit is contained in:
parent
2f236b752c
commit
7573c52755
3 changed files with 11 additions and 14 deletions
|
@ -2,8 +2,7 @@
|
|||
use crate::fs::{DirItem, DirItemIterator, Result};
|
||||
|
||||
use super::{
|
||||
path::{DirMarker, PathReal},
|
||||
DirHandle, Error, FileMarker, PathMarker,
|
||||
path::{DirMarker, PathReal}, DirHandle, Error, FileHandle, FileMarker, PathHandle, PathMarker
|
||||
};
|
||||
|
||||
impl<'base, 'path> DirHandle<'base, 'path> {
|
||||
|
@ -62,13 +61,11 @@ impl<'base, 'path> DirHandle<'base, 'path> {
|
|||
Ok(Box::new(DirItemIterator::new(read_dir)))
|
||||
}
|
||||
}
|
||||
impl<'base, 'path> TryFrom<PathReal<'base, 'path, PathMarker>>
|
||||
for PathReal<'base, 'path, FileMarker>
|
||||
{
|
||||
impl<'base, 'path> TryFrom<PathHandle<'base, 'path>> for FileHandle<'base, 'path> {
|
||||
type Error = crate::fs::Error;
|
||||
|
||||
fn try_from(
|
||||
path: PathReal<'base, 'path, PathMarker>,
|
||||
path: PathHandle<'base, 'path>,
|
||||
) -> std::result::Result<Self, Self::Error> {
|
||||
match path.as_file() {
|
||||
Ok(Some(dir)) => Ok(dir.clone()),
|
||||
|
@ -79,13 +76,11 @@ impl<'base, 'path> TryFrom<PathReal<'base, 'path, PathMarker>>
|
|||
}
|
||||
}
|
||||
}
|
||||
impl<'base, 'path> TryFrom<PathReal<'base, 'path, PathMarker>>
|
||||
for PathReal<'base, 'path, DirMarker>
|
||||
{
|
||||
impl<'base, 'path> TryFrom<PathHandle<'base, 'path>> for DirHandle<'base, 'path> {
|
||||
type Error = crate::fs::Error;
|
||||
|
||||
fn try_from(
|
||||
path: PathReal<'base, 'path, PathMarker>,
|
||||
path: PathHandle<'base, 'path>,
|
||||
) -> std::result::Result<Self, Self::Error> {
|
||||
match path.as_dir() {
|
||||
Ok(Some(dir)) => Ok(dir.clone()),
|
||||
|
|
|
@ -58,7 +58,7 @@ impl<'base, 'path> FileHandle<'base, 'path> {
|
|||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
pub fn copy(&self, dest: &PathReal<'base, 'path, FileMarker>) -> Result<u64> {
|
||||
pub fn copy(&self, dest: &FileHandle<'base, 'path>) -> Result<u64> {
|
||||
self.check_error()?;
|
||||
std::fs::copy(self.as_pathbuf(), dest.as_pathbuf()).map_err(Error::Io)
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ use std::{
|
|||
|
||||
use crate::fs::{Error, Result};
|
||||
|
||||
use super::{DirHandle, FileHandle, PathHandle};
|
||||
|
||||
/// Marker trait for the type of [PathReal].
|
||||
pub trait PathType {}
|
||||
|
||||
|
@ -170,7 +172,7 @@ impl<'base, 'path, T: PathType> PathReal<'base, 'path, T> {
|
|||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
pub fn as_dir(&self) -> Result<Option<PathReal<'base, 'path, DirMarker>>> {
|
||||
pub fn as_dir(&self) -> Result<Option<DirHandle<'base, 'path>>> {
|
||||
self.check_error()?;
|
||||
if self.as_pathbuf().is_dir() {
|
||||
Ok(Some(PathReal::new(self.base, self.path)))
|
||||
|
@ -193,7 +195,7 @@ impl<'base, 'path, T: PathType> PathReal<'base, 'path, T> {
|
|||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
pub fn as_file(&self) -> Result<Option<PathReal<'base, 'path, FileMarker>>> {
|
||||
pub fn as_file(&self) -> Result<Option<FileHandle<'base, 'path>>> {
|
||||
self.check_error()?;
|
||||
if self.as_pathbuf().is_file() {
|
||||
Ok(Some(PathReal::new(self.base, self.path)))
|
||||
|
@ -202,7 +204,7 @@ impl<'base, 'path, T: PathType> PathReal<'base, 'path, T> {
|
|||
}
|
||||
}
|
||||
}
|
||||
impl From<PathReal<'_, '_, PathMarker>> for PathBuf {
|
||||
impl<'base, 'path> From<PathHandle<'base, 'path>> for PathBuf {
|
||||
fn from(path: PathReal<PathMarker>) -> Self {
|
||||
path.base.join(path.path)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue