Struct block_device_adapters::BufStream
source · pub struct BufStream<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize>{ /* private fields */ }Expand description
A Stream wrapper for accessing a stream in block sized chunks.
BufStream<T, const SIZE: usize, const ALIGN: usize can be initialized with the following parameters.
T: The inner stream.SIZE: The size of the block, this dictates the size of the internal buffer.ALIGN: The alignment of the internal buffer.
If the buf provided to either Read::read or Write::write meets the following conditions the buf
will be used directly instead of the intermediate buffer to avoid unnecessary copies:
buf.len()is a multiple of block sizebufhas the same alignment as the internal buffer- The byte address of the inner device is aligned to a block size.
BufStream<T, const SIZE: usize, const ALIGN: usize implements the embedded_io_async traits, and implicitly
handles the RMW (Read, Modify, Write) cycle for you.
Implementations§
Trait Implementations§
source§impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> ErrorType for BufStream<T, SIZE, ALIGN>
impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> ErrorType for BufStream<T, SIZE, ALIGN>
§type Error = BufStreamError<<T as BlockDevice<SIZE>>::Error>
type Error = BufStreamError<<T as BlockDevice<SIZE>>::Error>
Error type of all the IO operations on this type.
source§impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> Read for BufStream<T, SIZE, ALIGN>
impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> Read for BufStream<T, SIZE, ALIGN>
source§impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> Seek for BufStream<T, SIZE, ALIGN>
impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> Seek for BufStream<T, SIZE, ALIGN>
source§impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> Write for BufStream<T, SIZE, ALIGN>
impl<T: BlockDevice<SIZE>, const SIZE: usize, const ALIGN: usize> Write for BufStream<T, SIZE, ALIGN>
source§async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error>
async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error>
Write a buffer into this writer, returning how many bytes were written. Read more
Auto Trait Implementations§
impl<T, const SIZE: usize, const ALIGN: usize> !RefUnwindSafe for BufStream<T, SIZE, ALIGN>
impl<T, const SIZE: usize, const ALIGN: usize> Send for BufStream<T, SIZE, ALIGN>where
T: Send,
impl<T, const SIZE: usize, const ALIGN: usize> Sync for BufStream<T, SIZE, ALIGN>where
T: Sync,
impl<T, const SIZE: usize, const ALIGN: usize> Unpin for BufStream<T, SIZE, ALIGN>where
T: Unpin,
impl<T, const SIZE: usize, const ALIGN: usize> !UnwindSafe for BufStream<T, SIZE, ALIGN>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more