pub struct BufStream<T: BlockDevice<SIZE>, const SIZE: 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§
Source§impl<T: BlockDevice<SIZE>, const SIZE: usize> BufStream<T, SIZE>
impl<T: BlockDevice<SIZE>, const SIZE: usize> BufStream<T, SIZE>
Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Returns inner object.
Trait Implementations§
Source§impl<T: BlockDevice<SIZE>, const SIZE: usize> ErrorType for BufStream<T, SIZE>
impl<T: BlockDevice<SIZE>, const SIZE: usize> ErrorType for BufStream<T, SIZE>
Source§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> Read for BufStream<T, SIZE>
impl<T: BlockDevice<SIZE>, const SIZE: usize> Read for BufStream<T, SIZE>
Source§async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error>
async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error>
Read some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Source§async fn read_exact(
&mut self,
buf: &mut [u8],
) -> Result<(), ReadExactError<Self::Error>>
async fn read_exact( &mut self, buf: &mut [u8], ) -> Result<(), ReadExactError<Self::Error>>
Read the exact number of bytes required to fill
buf. Read moreSource§impl<T: BlockDevice<SIZE>, const SIZE: usize> Seek for BufStream<T, SIZE>
impl<T: BlockDevice<SIZE>, const SIZE: usize> Seek for BufStream<T, SIZE>
Source§impl<T: BlockDevice<SIZE>, const SIZE: usize> Write for BufStream<T, SIZE>
impl<T: BlockDevice<SIZE>, const SIZE: usize> Write for BufStream<T, SIZE>
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