pub type Result<T> = crate::VfResult<T>;
pub type Error = crate::VfError;
pub use crate::{
AttrMask as Attributes, Attrs, Capabilities, CopyOption, DirEntry, ErrorDomain,
FilesystemStats, MetadataUpdate, OpenFlags, OpenOp, Permissions, RemoveOptions, StatusCode,
TransportKind, VfType as FileType,
};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum RenameOptions {
#[default]
Replace,
NoReplace,
Exchange,
}
pub use std::io::ErrorKind;
pub use std::ops::ControlFlow;
mod traits;
pub use traits::{FileHandle, Vfsi, VfsiExt};
mod metadata;
pub use metadata::AttrsOptions;
mod read;
pub use read::{ReadOp, ReadOptions, ReadResult};
mod write;
pub use write::{WriteOp, WriteOptions};
mod visit;
pub use visit::ListDirOptions;
mod support;
pub use support::{
DEFAULT_DIRECTORY_MAX_ENTRIES, DEFAULT_DIRECTORY_MAX_PATH_BYTES,
DEFAULT_READ_ALLV_MAX_TOTAL_BYTES, DEFAULT_READ_MAX_BYTES, DEFAULT_READ_STREAM_CHUNK_BYTES,
DEFAULT_READV_MAX_TOTAL_BYTES, DEFAULT_WALK_MAX_DEPTH, DepthLimit, DirectoryListing,
ReadDirOptions, ResourceLimits, StreamCompletion, StreamOptions, TraversalCompletion,
WalkOptions,
};
pub use support::{ReadIntoResult, WriteResult};
mod traversal;
#[doc(hidden)]
pub use traversal::walk_events;
pub use traversal::{WalkControl, WalkEvent, WalkEventKind};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum RemoveMode {
#[default]
Entry,
Tree,
Contents,
}
#[doc(hidden)]
pub mod internal {
pub use super::read::{ReadRequest, consume_ops, read_batch};
pub use super::support::FsReadResult as OwnedReadResult;
}
pub mod prelude {
pub use super::{
Attributes, AttrsOptions, ControlFlow, CopyOption, FileHandle, ListDirOptions,
MetadataOperand, MetadataTarget, MetadataUpdate, OpenFlags, OpenOp, ReadOp, ReadOptions,
ReadResult, RemoveMode, RemoveOptions, RenameOptions, ResourceLimits, StreamOptions, Vfsi,
VfsiExt, WriteOp, WriteOptions,
};
}
pub enum MetadataTarget<'a, F> {
Path(&'a std::path::Path),
File(&'a F),
}
impl<F> MetadataTarget<'_, F> {
pub fn path(path: &impl AsRef<std::path::Path>) -> MetadataTarget<'_, F> {
MetadataTarget::Path(path.as_ref())
}
pub fn file(file: &F) -> MetadataTarget<'_, F> {
MetadataTarget::File(file)
}
}
pub trait MetadataOperand<F> {
fn metadata_target(&self) -> MetadataTarget<'_, F>;
}
impl<F, P: AsRef<std::path::Path>> MetadataOperand<F> for P {
fn metadata_target(&self) -> MetadataTarget<'_, F> {
MetadataTarget::Path(self.as_ref())
}
}
impl<F> MetadataOperand<F> for MetadataTarget<'_, F> {
fn metadata_target(&self) -> MetadataTarget<'_, F> {
match self {
Self::Path(path) => MetadataTarget::Path(path),
Self::File(file) => MetadataTarget::File(file),
}
}
}