Trait compio_io::AsyncWrite

source ·
pub trait AsyncWrite {
    // Required methods
    async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>;
    async fn flush(&mut self) -> Result<()>;
    async fn shutdown(&mut self) -> Result<()>;

    // Provided method
    async fn write_vectored<T: IoVectoredBuf>(
        &mut self,
        buf: T,
    ) -> BufResult<usize, T> { ... }
}
Expand description

§AsyncWrite

Async write with a ownership of a buffer

Required Methods§

source

async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>

Write some bytes from the buffer into this source and return a BufResult, consisting of the buffer and a usize indicating how many bytes were written.

source

async fn flush(&mut self) -> Result<()>

Attempts to flush the object, ensuring that any buffered data reach their destination.

source

async fn shutdown(&mut self) -> Result<()>

Initiates or attempts to shut down this writer, returning success when the I/O connection has completely shut down.

Provided Methods§

source

async fn write_vectored<T: IoVectoredBuf>( &mut self, buf: T, ) -> BufResult<usize, T>

Like write, except that it write bytes from a buffer implements IoVectoredBuf into the source.

The default implementation will try to write from the buffers in order as if they’re concatenated. It will stop whenever the writer returns an error, Ok(0), or a length less than the length of the buf passed in, meaning it’s possible that not all contents are written. If guaranteed full write is desired, it is recommended to use AsyncWriteExt::write_vectored_all instead.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl AsyncWrite for Vec<u8>

Write is implemented for Vec<u8> by appending to the vector. The vector will grow as needed.

source§

async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>

source§

async fn write_vectored<T: IoVectoredBuf>( &mut self, buf: T, ) -> BufResult<usize, T>

source§

async fn flush(&mut self) -> Result<()>

source§

async fn shutdown(&mut self) -> Result<()>

source§

impl<A: AsyncWrite + ?Sized> AsyncWrite for &mut A

source§

async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>

source§

async fn write_vectored<T: IoVectoredBuf>( &mut self, buf: T, ) -> BufResult<usize, T>

source§

async fn flush(&mut self) -> Result<()>

source§

async fn shutdown(&mut self) -> Result<()>

source§

impl<A: AsyncWriteAt> AsyncWrite for Cursor<A>

source§

async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>

source§

async fn write_vectored<T: IoVectoredBuf>( &mut self, buf: T, ) -> BufResult<usize, T>

source§

async fn flush(&mut self) -> Result<()>

source§

async fn shutdown(&mut self) -> Result<()>

source§

impl<W: AsyncWrite + ?Sized> AsyncWrite for Box<W>

source§

async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>

source§

async fn write_vectored<T: IoVectoredBuf>( &mut self, buf: T, ) -> BufResult<usize, T>

source§

async fn flush(&mut self) -> Result<()>

source§

async fn shutdown(&mut self) -> Result<()>

Implementors§