pub trait BlockDevice {
type Error: Debug;
// Required methods
async fn read(
&self,
blocks: &mut [Block],
start_block_idx: BlockIdx,
reason: &str,
) -> Result<(), Self::Error>;
async fn write(
&self,
blocks: &[Block],
start_block_idx: BlockIdx,
) -> Result<(), Self::Error>;
async fn num_blocks(&self) -> Result<BlockCount, Self::Error>;
}Expand description
Represents a block device - a device which can read and write blocks (or sectors). Only supports devices which are <= 2 TiB in size.
Required Associated Types§
Required Methods§
Sourceasync fn read(
&self,
blocks: &mut [Block],
start_block_idx: BlockIdx,
reason: &str,
) -> Result<(), Self::Error>
async fn read( &self, blocks: &mut [Block], start_block_idx: BlockIdx, reason: &str, ) -> Result<(), Self::Error>
Read one or more blocks, starting at the given block index.
Sourceasync fn write(
&self,
blocks: &[Block],
start_block_idx: BlockIdx,
) -> Result<(), Self::Error>
async fn write( &self, blocks: &[Block], start_block_idx: BlockIdx, ) -> Result<(), Self::Error>
Write one or more blocks, starting at the given block index.
Sourceasync fn num_blocks(&self) -> Result<BlockCount, Self::Error>
async fn num_blocks(&self) -> Result<BlockCount, Self::Error>
Determine how many blocks this device can hold.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".