Skip to main content

vfsi_sync/
lib.rs

1//! Synchronous filesystem interface facets.
2//!
3//! The compatibility [`VecFs`] trait remains the optimized vector contract.
4//! Its single-operation helpers form today's scalar facet without introducing
5//! a second, conflicting set of method names.
6
7use std::path::{Path, PathBuf};
8
9pub use vfsi_core::*;
10
11#[doc(hidden)]
12pub mod path {
13    pub use vfsi_core::path::*;
14}
15
16mod traits;
17pub use traits::{
18    BackendDirectoryPage, DirPageCursor, DirectoryPage, ReadAllOptions, VecFs, VecFsExt,
19    rm_recursive,
20};
21mod io;
22pub use io::{VfFileHandle, VfOpenOptions};
23mod client;
24mod traversal;
25pub use client::{FsClient, FsDir, FsFile, FsRead, FsReadInto, FsWrite, OpenOptions, SetMetadata};
26pub use traversal::walk_events;
27mod native;
28pub use native::{
29    CopyFileSystem, DirectoryFileSystem, FileSystem, LinkFileSystem, MetadataFileSystem,
30    NamespaceFileSystem, NativeFileSystem, VectorFileSystem,
31};
32
33/// Scalar/singular view of the synchronous interface.
34pub mod sfsi {
35    pub use crate::{
36        CopyFileSystem, DepthLimit, DirPageCursor, DirectoryFileSystem, FileSystem, FsClient,
37        FsFile, LinkFileSystem, MetadataFileSystem, NamespaceFileSystem, NativeFileSystem,
38        OpenOptions, ReadDirOptions, ReadStreamOptions, WalkOptions,
39    };
40    pub use vfsi_core::{Fd, VfAttrs, VfError, VfFile, VfOffset, VfResult, VfType};
41}
42
43/// Vectorized view of the synchronous interface.
44pub mod vfsi {
45    pub use crate::{
46        DEFAULT_DIRECTORY_MAX_ENTRIES, DEFAULT_DIRECTORY_MAX_PATH_BYTES,
47        DEFAULT_READ_ALLV_MAX_TOTAL_BYTES, DEFAULT_READ_MAX_BYTES, DEFAULT_READ_STREAM_CHUNK_BYTES,
48        DEFAULT_WALK_MAX_DEPTH, DepthLimit, DirPageCursor, ReadAllOptions, ReadDirOptions,
49        ReadStreamOptions, VecFs, VecFsExt, VectorFileSystem, WalkOptions, rm_recursive,
50    };
51    pub use vfsi_core::*;
52}
53
54#[cfg(feature = "test-support")]
55#[doc(hidden)]
56pub mod test_support;
57
58// Preserve backend-facing paths while the canonical portable types live in core.
59pub use vfsi_core::api::{
60    DEFAULT_DIRECTORY_MAX_ENTRIES, DEFAULT_DIRECTORY_MAX_PATH_BYTES,
61    DEFAULT_READ_ALLV_MAX_TOTAL_BYTES, DEFAULT_READ_MAX_BYTES, DEFAULT_READ_STREAM_CHUNK_BYTES,
62    DEFAULT_READV_MAX_TOTAL_BYTES, DEFAULT_WALK_MAX_DEPTH, DepthLimit, DirectoryListing,
63    ReadDirOptions, ReadIntoResult as FsReadIntoResult, ReadStreamOptions, ResourceLimits,
64    StreamCompletion, TraversalCompletion, WalkControl, WalkEvent, WalkEventKind, WalkOptions,
65    WriteResult as FsWriteResult,
66};
67
68#[doc(hidden)]
69pub mod application;
70
71pub use vfsi_core::api::internal::OwnedReadResult as FsReadResult;