pub trait DirectBaseOperations: Send + Sync {
// Required methods
fn read(&self, buffer: &mut [u8], absolute_position: Size) -> Result<usize>;
fn write(&self, buffer: &[u8], absolute_position: Size) -> Result<usize>;
// Provided methods
fn open(&self) -> Result<()> { ... }
fn close(&self) -> Result<()> { ... }
fn read_until(
&self,
buffer: &mut [u8],
absolute_position: Size,
delimiter: &[u8],
) -> Result<usize> { ... }
fn write_pattern(
&self,
pattern: &[u8],
count: usize,
absolute_position: Size,
) -> Result<usize> { ... }
fn write_vectored(
&self,
buffers: &[&[u8]],
absolute_position: Size,
) -> Result<usize> { ... }
fn flush(&self) -> Result<()> { ... }
fn set_position(
&self,
_current_position: Size,
_position: &Position,
) -> Result<Size> { ... }
fn control(
&self,
_command: ControlCommandIdentifier,
_input: &AnyByLayout,
_output: &mut AnyByLayout,
) -> Result<()> { ... }
}Required Methods§
fn read(&self, buffer: &mut [u8], absolute_position: Size) -> Result<usize>
fn write(&self, buffer: &[u8], absolute_position: Size) -> Result<usize>
Provided Methods§
fn open(&self) -> Result<()>
fn close(&self) -> Result<()>
fn read_until( &self, buffer: &mut [u8], absolute_position: Size, delimiter: &[u8], ) -> Result<usize>
fn write_pattern( &self, pattern: &[u8], count: usize, absolute_position: Size, ) -> Result<usize>
fn write_vectored( &self, buffers: &[&[u8]], absolute_position: Size, ) -> Result<usize>
fn flush(&self) -> Result<()>
fn set_position( &self, _current_position: Size, _position: &Position, ) -> Result<Size>
fn control( &self, _command: ControlCommandIdentifier, _input: &AnyByLayout, _output: &mut AnyByLayout, ) -> Result<()>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".