1 use std::pin::Pin; 2 use std::future::Future; 3 4 use crate::io::{self, Write}; 5 use crate::task::{Context, Poll}; 6 7 #[doc(hidden)] 8 #[allow(missing_debug_implementations)] 9 pub struct WriteFuture<'a, T: Unpin + ?Sized> { 10 pub(crate) writer: &'a mut T, 11 pub(crate) buf: &'a [u8], 12 } 13 14 impl<T: Write + Unpin + ?Sized> Future for WriteFuture<'_, T> { 15 type Output = io::Result<usize>; 16 poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>17 fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> { 18 let buf = self.buf; 19 Pin::new(&mut *self.writer).poll_write(cx, buf) 20 } 21 } 22