fn poll_write_vectored(
            self: Pin<&mut Self>,
            cx: &mut Context<'_>,
            bufs: &[IoSlice<'_>],
        ) -> Poll<Result<usize>> {
            for b in bufs {
                if !b.is_empty() {
                    return self.poll_write(cx, b);
                }
            }

            self.poll_write(cx, &[])
        }
Attempt to write bytes from `bufs` into the object using vectored
IO operations.

This method is similar to `poll_write`, but allows data from multiple buffers to be written
using a single operation.

On success, returns `Poll::Ready(Ok(num_bytes_written))`.

If the object is not ready for writing, the method returns
`Poll::Pending` and arranges for the current task (via
`cx.waker().wake_by_ref()`) to receive a notification when the object becomes
writable or is closed.

By default, this method delegates to using `poll_write` on the first
nonempty buffer in `bufs`, or an empty one if none exists. Objects which
support vectored IO should override this method.

# Implementation

This function may not return errors of kind `WouldBlock` or
`Interrupted`.  Implementations must convert `WouldBlock` into
`Poll::Pending` and either internally retry or convert
`Interrupted` into another error kind.
futures-io/src/lib.rs