refactor(fs): use type aliases
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 2m2s
Rust / build (map[name:stable]) (push) Successful in 3m54s
Release Please / Release-plz (push) Successful in 41s

This commit is contained in:
Paul Campbell 2024-11-03 13:28:18 +00:00
parent 2f236b752c
commit 6aeb4521fc
3 changed files with 12 additions and 25 deletions

View file

@ -1,10 +1,7 @@
//
use crate::fs::{DirItem, DirItemIterator, Result};
use super::{
path::{DirMarker, PathReal},
DirHandle, Error, FileMarker, PathMarker,
};
use super::{DirHandle, Error, FileHandle, PathHandle};
impl<'base, 'path> DirHandle<'base, 'path> {
/// Creates a new, empty directory at the path
@ -62,14 +59,10 @@ 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>,
) -> std::result::Result<Self, Self::Error> {
fn try_from(path: PathHandle<'base, 'path>) -> std::result::Result<Self, Self::Error> {
match path.as_file() {
Ok(Some(dir)) => Ok(dir.clone()),
Ok(None) => Err(crate::fs::Error::NotADirectory {
@ -79,14 +72,10 @@ 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>,
) -> std::result::Result<Self, Self::Error> {
fn try_from(path: PathHandle<'base, 'path>) -> std::result::Result<Self, Self::Error> {
match path.as_dir() {
Ok(Some(dir)) => Ok(dir.clone()),
Ok(None) => Err(crate::fs::Error::NotADirectory {

View file

@ -1,11 +1,7 @@
//
use crate::fs::Result;
use super::{
path::{FileMarker, PathReal},
reader::Reader,
Error, FileHandle,
};
use super::{reader::Reader, Error, FileHandle};
impl<'base, 'path> FileHandle<'base, 'path> {
/// Returns a [Reader] for the file.
@ -58,7 +54,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)
}

View file

@ -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)
}