pub struct AsyncSliceWriter<'b> { /* private fields */ }Expand description
Writes asynchronously to a slice of bytes, without attempting to allocate more memory if a write is attempted past the end of the slice.
Should a write be attempted past the end of the slice without any remaining space, an error of WriteZero will be returned.
§Examples
use futures::{AsyncWriteExt, executor};
use diny_core::util::AsyncSliceWriter;
let send = [7u8; 5];
let mut buff = [0u8; 7];
let mut writer = AsyncSliceWriter::from(&mut buff[..]);
executor::block_on(writer.write(&send));
assert_eq!(send, writer.as_written());The written bytes can then be easily retrieved by using an AsyncSliceReader
use futures::AsyncReadExt;
use diny_core::util::AsyncSliceReader;
let mut recv = [0u8; 5];
let mut reader = AsyncSliceReader::from(&writer);
executor::block_on(reader.read(&mut recv));
assert_eq!(send, recv);Implementations§
Source§impl<'b> AsyncSliceWriter<'b>
impl<'b> AsyncSliceWriter<'b>
Sourcepub fn new(buf: &'b mut [u8]) -> Self
pub fn new(buf: &'b mut [u8]) -> Self
Instantiates a new async reader that implements AsyncWrite over the provided slice.
Sourcepub fn bytes_written(&self) -> usize
pub fn bytes_written(&self) -> usize
Returns the number of bytes that have been written so far into the provided slice.
Sourcepub fn as_written(&self) -> &[u8] ⓘ
pub fn as_written(&self) -> &[u8] ⓘ
Returns a read-only slice of the data that has been written so far into the provided slice.
Trait Implementations§
Source§impl AsyncWrite for AsyncSliceWriter<'_>
impl AsyncWrite for AsyncSliceWriter<'_>
Source§fn poll_write(
self: Pin<&mut Self>,
_cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, _cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
Attempt to write bytes from
buf into the object. Read moreSource§fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>>
fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>>
Attempt to flush the object, ensuring that any buffered data reach
their destination. Read more
Source§impl<'b> From<&'b AsyncSliceWriter<'b>> for AsyncSliceReader<'b>
impl<'b> From<&'b AsyncSliceWriter<'b>> for AsyncSliceReader<'b>
Source§fn from(s: &'b AsyncSliceWriter<'b>) -> Self
fn from(s: &'b AsyncSliceWriter<'b>) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl<'b> !UnwindSafe for AsyncSliceWriter<'b>
impl<'b> Freeze for AsyncSliceWriter<'b>
impl<'b> RefUnwindSafe for AsyncSliceWriter<'b>
impl<'b> Send for AsyncSliceWriter<'b>
impl<'b> Sync for AsyncSliceWriter<'b>
impl<'b> Unpin for AsyncSliceWriter<'b>
impl<'b> UnsafeUnpin for AsyncSliceWriter<'b>
Blanket Implementations§
Source§impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
Source§fn flush(&mut self) -> Flush<'_, Self>where
Self: Unpin,
fn flush(&mut self) -> Flush<'_, Self>where
Self: Unpin,
Creates a future which will entirely flush this
AsyncWrite. Read moreSource§fn close(&mut self) -> Close<'_, Self>where
Self: Unpin,
fn close(&mut self) -> Close<'_, Self>where
Self: Unpin,
Creates a future which will entirely close this
AsyncWrite.Source§fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
Creates a future which will write bytes from
buf into the object. Read moreSource§fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self>where
Self: Unpin,
fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self>where
Self: Unpin,
Creates a future which will write bytes from
bufs into the object using vectored
IO operations. Read moreSource§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