Skip to main content

vfsi_core/api/
mod.rs

1//! Portable synchronous vectorized filesystem API.
2//!
3//! Implement [`Vfsi`] for native vector execution; [`VfsiExt`] is blanket
4//! implemented and composes scalar conveniences and workflows from those vectors.
5//! This module has no backend, native RPC, or runtime dependencies.
6//!
7//! Application read/write operations live here rather than sharing the legacy
8//! backend operation types at the crate root.
9
10pub type Result<T> = crate::VfResult<T>;
11pub type Error = crate::VfError;
12pub use crate::{
13    AttrMask as MetadataFields, Capabilities, DirEntry, ErrorDomain, Metadata, OpenFlags,
14    OpenRequest, Permissions, RemoveOptions, StatusCode, TransportKind, VfType as FileType,
15};
16pub use std::io::ErrorKind;
17pub use std::ops::ControlFlow;
18mod traits;
19pub use traits::{FileHandle, Vfsi, VfsiExt};
20mod metadata;
21pub use metadata::MetadataOptions;
22mod read;
23pub use read::{ReadOp, ReadOptions, ReadResult};
24mod write;
25pub use write::{WriteOp, WriteOptions};
26mod visit;
27pub use visit::VisitOptions;
28mod support;
29pub use support::{
30    DEFAULT_DIRECTORY_MAX_ENTRIES, DEFAULT_DIRECTORY_MAX_PATH_BYTES,
31    DEFAULT_READ_ALLV_MAX_TOTAL_BYTES, DEFAULT_READ_MAX_BYTES, DEFAULT_READ_STREAM_CHUNK_BYTES,
32    DEFAULT_READV_MAX_TOTAL_BYTES, DEFAULT_WALK_MAX_DEPTH, DepthLimit, DirectoryListing,
33    ReadDirOptions, ReadStreamOptions, ResourceLimits, StreamCompletion, TraversalCompletion,
34    WalkOptions,
35};
36pub use support::{ReadIntoResult, WriteResult};
37mod traversal;
38#[doc(hidden)]
39pub use traversal::walk_events;
40pub use traversal::{WalkControl, WalkEvent, WalkEventKind};
41/// What each input to [`Vfsi::vremove`] removes.
42#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
43pub enum RemoveMode {
44    /// Remove a file, symlink, or empty directory; do not traverse directories.
45    #[default]
46    Entry,
47    /// Remove the entry and, for directories, its descendants.
48    Tree,
49    /// Remove descendants while retaining the directory root. Final symlinks
50    /// are not followed; execution uses the backend's anchored removal path.
51    Contents,
52}
53
54/// Unstable dispatch projections for workspace backend implementations.
55#[doc(hidden)]
56pub mod internal {
57    pub use super::read::{ReadRequest, consume_ops, read_batch};
58    pub use super::support::FsReadResult as OwnedReadResult;
59}
60
61/// Common imports for backend-independent application code.
62pub mod prelude {
63    pub use super::{
64        ControlFlow, FileHandle, MetadataFields, MetadataOptions, OpenFlags, OpenRequest, ReadOp,
65        ReadOptions, ReadResult, ReadStreamOptions, RemoveMode, RemoveOptions, ResourceLimits,
66        Vfsi, VfsiExt, VisitOptions, WriteOp, WriteOptions,
67    };
68}