pub trait FileSystem {
Show 14 methods
// Required methods
fn capabilities(&self) -> Capabilities;
fn open_one(&mut self, request: &OpenRequest) -> VfResult<VfFile>;
fn close_one(&mut self, file: &VfFile) -> VfResult<()>;
fn sync_data(&mut self, file: &VfFile) -> VfResult<()>;
fn sync_all(&mut self, file: &VfFile) -> VfResult<()>;
fn read_one(&mut self, request: &ReadOp) -> VfResult<ReadResult>;
fn write_one(&mut self, request: WriteOpRef<'_>) -> VfResult<WriteResult>;
fn seek_one(&mut self, file: &VfFile, position: SeekFrom) -> VfResult<u64>;
fn metadata(&mut self, query: MetadataQuery) -> VfResult<VfAttrs>;
fn set_attributes(&mut self, update: SetAttributes) -> VfResult<()>;
// Provided methods
fn take_notifications(&mut self) -> Vec<Box<dyn FnOnce() + Send>> { ... }
fn read_file(
&mut self,
file: &VfFile,
max_bytes: usize,
) -> VfResult<Vec<u8>> { ... }
fn close_deferred(&mut self, file: &VfFile) -> VfResult<()> { ... }
fn read_one_into(
&mut self,
request: &ReadOp,
buffer: &mut [u8],
) -> VfResult<ReadIntoResult> { ... }
}Expand description
Core synchronous scalar filesystem operations.
Required Methods§
fn capabilities(&self) -> Capabilities
fn open_one(&mut self, request: &OpenRequest) -> VfResult<VfFile>
fn close_one(&mut self, file: &VfFile) -> VfResult<()>
fn sync_data(&mut self, file: &VfFile) -> VfResult<()>
fn sync_all(&mut self, file: &VfFile) -> VfResult<()>
fn read_one(&mut self, request: &ReadOp) -> VfResult<ReadResult>
fn write_one(&mut self, request: WriteOpRef<'_>) -> VfResult<WriteResult>
fn seek_one(&mut self, file: &VfFile, position: SeekFrom) -> VfResult<u64>
fn metadata(&mut self, query: MetadataQuery) -> VfResult<VfAttrs>
fn set_attributes(&mut self, update: SetAttributes) -> VfResult<()>
Provided Methods§
Sourcefn take_notifications(&mut self) -> Vec<Box<dyn FnOnce() + Send>>
fn take_notifications(&mut self) -> Vec<Box<dyn FnOnce() + Send>>
Extract callbacks for delivery after the owning client’s backend lock is released. Implementations must not invoke user callbacks in this hook.
Sourcefn read_file(&mut self, file: &VfFile, max_bytes: usize) -> VfResult<Vec<u8>>
fn read_file(&mut self, file: &VfFile, max_bytes: usize) -> VfResult<Vec<u8>>
Read a complete opened file with a logical payload limit. Specialized backends override this to share their optimized vector whole-file path.
Sourcefn close_deferred(&mut self, file: &VfFile) -> VfResult<()>
fn close_deferred(&mut self, file: &VfFile) -> VfResult<()>
Finish cleanup of a previously owned, dropped handle. A backend that transfers ownership into its own queue after CLOSE fails must reconcile that queue here rather than repeatedly reporting an invalid descriptor.
Sourcefn read_one_into(
&mut self,
request: &ReadOp,
buffer: &mut [u8],
) -> VfResult<ReadIntoResult>
fn read_one_into( &mut self, request: &ReadOp, buffer: &mut [u8], ) -> VfResult<ReadIntoResult>
Read directly into caller storage when supported by the backend.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".