pub trait FileSystem {
Show 26 methods
// Required methods
fn sync_data(&mut self, tcf: &VfFile) -> VfResult<()>;
fn open_impl(&mut self, request: &OpenOp) -> VfResult<VfFile>;
fn close_impl(&mut self, file: &VfFile) -> VfResult<()>;
fn read_impl(&mut self, request: &ReadOp) -> VfResult<ReadResult>;
fn write_impl(&mut self, request: WriteOpRef<'_>) -> VfResult<WriteResult>;
fn seek_impl(&mut self, file: &VfFile, position: SeekFrom) -> VfResult<u64>;
fn metadata_impl(&mut self, query: MetadataQuery) -> VfResult<VfAttrs>;
fn set_attributes_impl(&mut self, update: SetAttributes) -> VfResult<()>;
// Provided methods
fn vstatfs_impl(
&mut self,
files: &[VfFile],
) -> VfResult<Vec<FilesystemStats>> { ... }
fn close_deferred(&mut self, file: &VfFile) -> VfResult<()> { ... }
fn take_notifications(&mut self) -> Vec<Box<dyn FnOnce() + Send>> { ... }
fn capability_bits(&self) -> u64 { ... }
fn capabilities(&self) -> Capabilities { ... }
fn abs_path(&self, path: &Path) -> PathBuf { ... }
fn open_path_impl(
&mut self,
base: VfPathBase,
pathname: &Path,
flags: i32,
mode: u32,
) -> VfResult<VfFile> { ... }
fn sync_all(&mut self, tcf: &VfFile) -> VfResult<()> { ... }
fn chdir(&mut self, path: &Path) -> VfResult<()> { ... }
fn getcwd(&self) -> PathBuf { ... }
fn seek_raw_impl(
&mut self,
tcf: &VfFile,
offset: i64,
whence: SeekFrom,
) -> VfResult<i64> { ... }
fn vf_path(&self, file: &VfFile) -> VfResult<PathBuf> { ... }
fn open_raw_impl(
&mut self,
pathname: &Path,
flags: i32,
mode: u32,
) -> VfResult<VfFile> { ... }
fn read_raw_impl(
&mut self,
file: &VfFile,
offset: u64,
length: usize,
) -> VfResult<Vec<u8>> { ... }
fn write_raw_impl(
&mut self,
file: &VfFile,
offset: u64,
data: &[u8],
) -> VfResult<usize> { ... }
fn read_file_impl(
&mut self,
file: &VfFile,
max_bytes: usize,
) -> VfResult<Vec<u8>> { ... }
fn read_into_impl(
&mut self,
request: &ReadOp,
buffer: &mut [u8],
) -> VfResult<ReadIntoResult> { ... }
fn vsetattrs_impl(
&mut self,
updates: Vec<SetAttributes>,
follow: bool,
) -> VfResult<()> { ... }
}Expand description
Minimum contract for owned handles and descriptor lifecycle. This includes handle-level metadata/statistics hooks, but does not require namespace operations, directory enumeration, or native vector I/O.
Required Methods§
fn sync_data(&mut self, tcf: &VfFile) -> VfResult<()>
fn open_impl(&mut self, request: &OpenOp) -> VfResult<VfFile>
fn close_impl(&mut self, file: &VfFile) -> VfResult<()>
fn read_impl(&mut self, request: &ReadOp) -> VfResult<ReadResult>
fn write_impl(&mut self, request: WriteOpRef<'_>) -> VfResult<WriteResult>
fn seek_impl(&mut self, file: &VfFile, position: SeekFrom) -> VfResult<u64>
fn metadata_impl(&mut self, query: MetadataQuery) -> VfResult<VfAttrs>
fn set_attributes_impl(&mut self, update: SetAttributes) -> VfResult<()>
Provided Methods§
fn vstatfs_impl(&mut self, files: &[VfFile]) -> VfResult<Vec<FilesystemStats>>
fn close_deferred(&mut self, file: &VfFile) -> VfResult<()>
fn take_notifications(&mut self) -> Vec<Box<dyn FnOnce() + Send>>
fn capability_bits(&self) -> u64
fn capabilities(&self) -> Capabilities
fn abs_path(&self, path: &Path) -> PathBuf
fn open_path_impl( &mut self, base: VfPathBase, pathname: &Path, flags: i32, mode: u32, ) -> VfResult<VfFile>
fn sync_all(&mut self, tcf: &VfFile) -> VfResult<()>
fn chdir(&mut self, path: &Path) -> VfResult<()>
fn getcwd(&self) -> PathBuf
fn seek_raw_impl( &mut self, tcf: &VfFile, offset: i64, whence: SeekFrom, ) -> VfResult<i64>
fn vf_path(&self, file: &VfFile) -> VfResult<PathBuf>
fn open_raw_impl( &mut self, pathname: &Path, flags: i32, mode: u32, ) -> VfResult<VfFile>
fn read_raw_impl( &mut self, file: &VfFile, offset: u64, length: usize, ) -> VfResult<Vec<u8>>
fn write_raw_impl( &mut self, file: &VfFile, offset: u64, data: &[u8], ) -> VfResult<usize>
fn read_file_impl( &mut self, file: &VfFile, max_bytes: usize, ) -> VfResult<Vec<u8>>
fn read_into_impl( &mut self, request: &ReadOp, buffer: &mut [u8], ) -> VfResult<ReadIntoResult>
fn vsetattrs_impl( &mut self, updates: Vec<SetAttributes>, follow: bool, ) -> VfResult<()>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".