Function tokio_util::util::poll_buf::poll_write_buf
source · pub fn poll_write_buf<T: AsyncWrite + ?Sized, B: Buf>(
io: Pin<&mut T>,
cx: &mut Context<'_>,
buf: &mut B,
) -> Poll<Result<usize>>
Expand description
Try to write data from an implementer of the Buf
trait to an
AsyncWrite
, advancing the buffer’s internal cursor.
This function will use vectored writes when the AsyncWrite
supports
vectored writes.
§Examples
File
implements AsyncWrite
and [Cursor<&[u8]>
] implements
Buf
:
use tokio_util::io::poll_write_buf;
use tokio::io;
use tokio::fs::File;
use bytes::Buf;
use std::io::Cursor;
use std::pin::Pin;
use futures::future::poll_fn;
#[tokio::main]
async fn main() -> io::Result<()> {
let mut file = File::create("foo.txt").await?;
let mut buf = Cursor::new(b"data to write");
// Loop until the entire contents of the buffer are written to
// the file.
while buf.has_remaining() {
poll_fn(|cx| poll_write_buf(Pin::new(&mut file), cx, &mut buf)).await?;
}
Ok(())
}