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", so this trait is not object safe.