Skip to content

Commit

Permalink
Stabilized vectored IO
Browse files Browse the repository at this point in the history
This renames `std::io::IoVec` to `std::io::IoSlice` and
`std::io::IoVecMut` to `std::io::IoSliceMut`, and stabilizes
`std::io::IoSlice`, `std::io::IoSliceMut`,
`std::io::Read::read_vectored`, and `std::io::Write::write_vectored`.

Closes #58452
  • Loading branch information
sfackler committed Apr 27, 2019
1 parent d4a32d5 commit bd177f3
Show file tree
Hide file tree
Showing 47 changed files with 278 additions and 278 deletions.
10 changes: 5 additions & 5 deletions src/libstd/fs.rs
Expand Up @@ -11,7 +11,7 @@


use crate::fmt; use crate::fmt;
use crate::ffi::OsString; use crate::ffi::OsString;
use crate::io::{self, SeekFrom, Seek, Read, Initializer, Write, IoVec, IoVecMut}; use crate::io::{self, SeekFrom, Seek, Read, Initializer, Write, IoSlice, IoSliceMut};
use crate::path::{Path, PathBuf}; use crate::path::{Path, PathBuf};
use crate::sys::fs as fs_imp; use crate::sys::fs as fs_imp;
use crate::sys_common::{AsInnerMut, FromInner, AsInner, IntoInner}; use crate::sys_common::{AsInnerMut, FromInner, AsInner, IntoInner};
Expand Down Expand Up @@ -617,7 +617,7 @@ impl Read for File {
self.inner.read(buf) self.inner.read(buf)
} }


fn read_vectored(&mut self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
self.inner.read_vectored(bufs) self.inner.read_vectored(bufs)
} }


Expand All @@ -632,7 +632,7 @@ impl Write for File {
self.inner.write(buf) self.inner.write(buf)
} }


fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
self.inner.write_vectored(bufs) self.inner.write_vectored(bufs)
} }


Expand All @@ -650,7 +650,7 @@ impl Read for &File {
self.inner.read(buf) self.inner.read(buf)
} }


fn read_vectored(&mut self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
self.inner.read_vectored(bufs) self.inner.read_vectored(bufs)
} }


Expand All @@ -665,7 +665,7 @@ impl Write for &File {
self.inner.write(buf) self.inner.write(buf)
} }


fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
self.inner.write_vectored(bufs) self.inner.write_vectored(bufs)
} }


Expand Down
6 changes: 3 additions & 3 deletions src/libstd/io/buffered.rs
Expand Up @@ -5,7 +5,7 @@ use crate::io::prelude::*;
use crate::cmp; use crate::cmp;
use crate::error; use crate::error;
use crate::fmt; use crate::fmt;
use crate::io::{self, Initializer, DEFAULT_BUF_SIZE, Error, ErrorKind, SeekFrom, IoVec, IoVecMut}; use crate::io::{self, Initializer, DEFAULT_BUF_SIZE, Error, ErrorKind, SeekFrom, IoSlice, IoSliceMut};
use crate::memchr; use crate::memchr;


/// The `BufReader` struct adds buffering to any reader. /// The `BufReader` struct adds buffering to any reader.
Expand Down Expand Up @@ -249,7 +249,7 @@ impl<R: Read> Read for BufReader<R> {
Ok(nread) Ok(nread)
} }


fn read_vectored(&mut self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
let total_len = bufs.iter().map(|b| b.len()).sum::<usize>(); let total_len = bufs.iter().map(|b| b.len()).sum::<usize>();
if self.pos == self.cap && total_len >= self.buf.len() { if self.pos == self.cap && total_len >= self.buf.len() {
self.discard_buffer(); self.discard_buffer();
Expand Down Expand Up @@ -609,7 +609,7 @@ impl<W: Write> Write for BufWriter<W> {
} }
} }


fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
let total_len = bufs.iter().map(|b| b.len()).sum::<usize>(); let total_len = bufs.iter().map(|b| b.len()).sum::<usize>();
if self.buf.len() + total_len > self.buf.capacity() { if self.buf.len() + total_len > self.buf.capacity() {
self.flush_buf()?; self.flush_buf()?;
Expand Down
58 changes: 29 additions & 29 deletions src/libstd/io/cursor.rs
@@ -1,7 +1,7 @@
use crate::io::prelude::*; use crate::io::prelude::*;


use crate::cmp; use crate::cmp;
use crate::io::{self, Initializer, SeekFrom, Error, ErrorKind, IoVec, IoVecMut}; use crate::io::{self, Initializer, SeekFrom, Error, ErrorKind, IoSlice, IoSliceMut};


use core::convert::TryInto; use core::convert::TryInto;


Expand Down Expand Up @@ -230,7 +230,7 @@ impl<T> Read for Cursor<T> where T: AsRef<[u8]> {
Ok(n) Ok(n)
} }


fn read_vectored(&mut self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
let mut nread = 0; let mut nread = 0;
for buf in bufs { for buf in bufs {
let n = self.read(buf)?; let n = self.read(buf)?;
Expand Down Expand Up @@ -275,7 +275,7 @@ fn slice_write(pos_mut: &mut u64, slice: &mut [u8], buf: &[u8]) -> io::Result<us
fn slice_write_vectored( fn slice_write_vectored(
pos_mut: &mut u64, pos_mut: &mut u64,
slice: &mut [u8], slice: &mut [u8],
bufs: &[IoVec<'_>], bufs: &[IoSlice<'_>],
) -> io::Result<usize> ) -> io::Result<usize>
{ {
let mut nwritten = 0; let mut nwritten = 0;
Expand Down Expand Up @@ -319,7 +319,7 @@ fn vec_write(pos_mut: &mut u64, vec: &mut Vec<u8>, buf: &[u8]) -> io::Result<usi
fn vec_write_vectored( fn vec_write_vectored(
pos_mut: &mut u64, pos_mut: &mut u64,
vec: &mut Vec<u8>, vec: &mut Vec<u8>,
bufs: &[IoVec<'_>], bufs: &[IoSlice<'_>],
) -> io::Result<usize> ) -> io::Result<usize>
{ {
let mut nwritten = 0; let mut nwritten = 0;
Expand All @@ -337,7 +337,7 @@ impl Write for Cursor<&mut [u8]> {
} }


#[inline] #[inline]
fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
slice_write_vectored(&mut self.pos, self.inner, bufs) slice_write_vectored(&mut self.pos, self.inner, bufs)
} }


Expand All @@ -350,7 +350,7 @@ impl Write for Cursor<&mut Vec<u8>> {
vec_write(&mut self.pos, self.inner, buf) vec_write(&mut self.pos, self.inner, buf)
} }


fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
vec_write_vectored(&mut self.pos, self.inner, bufs) vec_write_vectored(&mut self.pos, self.inner, bufs)
} }


Expand All @@ -363,7 +363,7 @@ impl Write for Cursor<Vec<u8>> {
vec_write(&mut self.pos, &mut self.inner, buf) vec_write(&mut self.pos, &mut self.inner, buf)
} }


fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
vec_write_vectored(&mut self.pos, &mut self.inner, bufs) vec_write_vectored(&mut self.pos, &mut self.inner, bufs)
} }


Expand All @@ -378,7 +378,7 @@ impl Write for Cursor<Box<[u8]>> {
} }


#[inline] #[inline]
fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
slice_write_vectored(&mut self.pos, &mut self.inner, bufs) slice_write_vectored(&mut self.pos, &mut self.inner, bufs)
} }


Expand All @@ -388,7 +388,7 @@ impl Write for Cursor<Box<[u8]>> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::io::prelude::*; use crate::io::prelude::*;
use crate::io::{Cursor, SeekFrom, IoVec, IoVecMut}; use crate::io::{Cursor, SeekFrom, IoSlice, IoSliceMut};


#[test] #[test]
fn test_vec_writer() { fn test_vec_writer() {
Expand All @@ -397,7 +397,7 @@ mod tests {
assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
assert_eq!(writer.write_vectored( assert_eq!(writer.write_vectored(
&[IoVec::new(&[]), IoVec::new(&[8, 9]), IoVec::new(&[10])], &[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])],
).unwrap(), 3); ).unwrap(), 3);
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
assert_eq!(writer, b); assert_eq!(writer, b);
Expand All @@ -410,7 +410,7 @@ mod tests {
assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
assert_eq!(writer.write_vectored( assert_eq!(writer.write_vectored(
&[IoVec::new(&[]), IoVec::new(&[8, 9]), IoVec::new(&[10])], &[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])],
).unwrap(), 3); ).unwrap(), 3);
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
Expand All @@ -424,7 +424,7 @@ mod tests {
assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
assert_eq!(writer.write_vectored( assert_eq!(writer.write_vectored(
&[IoVec::new(&[]), IoVec::new(&[8, 9]), IoVec::new(&[10])], &[IoSlice::new(&[]), IoSlice::new(&[8, 9]), IoSlice::new(&[10])],
).unwrap(), 3); ).unwrap(), 3);
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
Expand Down Expand Up @@ -452,18 +452,18 @@ mod tests {
fn test_box_slice_writer_vectored() { fn test_box_slice_writer_vectored() {
let mut writer = Cursor::new(vec![0u8; 9].into_boxed_slice()); let mut writer = Cursor::new(vec![0u8; 9].into_boxed_slice());
assert_eq!(writer.position(), 0); assert_eq!(writer.position(), 0);
assert_eq!(writer.write_vectored(&[IoVec::new(&[0])]).unwrap(), 1); assert_eq!(writer.write_vectored(&[IoSlice::new(&[0])]).unwrap(), 1);
assert_eq!(writer.position(), 1); assert_eq!(writer.position(), 1);
assert_eq!( assert_eq!(
writer.write_vectored(&[IoVec::new(&[1, 2, 3]), IoVec::new(&[4, 5, 6, 7])]).unwrap(), writer.write_vectored(&[IoSlice::new(&[1, 2, 3]), IoSlice::new(&[4, 5, 6, 7])]).unwrap(),
7, 7,
); );
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);
assert_eq!(writer.write_vectored(&[]).unwrap(), 0); assert_eq!(writer.write_vectored(&[]).unwrap(), 0);
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);


assert_eq!(writer.write_vectored(&[IoVec::new(&[8, 9])]).unwrap(), 1); assert_eq!(writer.write_vectored(&[IoSlice::new(&[8, 9])]).unwrap(), 1);
assert_eq!(writer.write_vectored(&[IoVec::new(&[10])]).unwrap(), 0); assert_eq!(writer.write_vectored(&[IoSlice::new(&[10])]).unwrap(), 0);
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
assert_eq!(&**writer.get_ref(), b); assert_eq!(&**writer.get_ref(), b);
} }
Expand Down Expand Up @@ -495,20 +495,20 @@ mod tests {
{ {
let mut writer = Cursor::new(&mut buf[..]); let mut writer = Cursor::new(&mut buf[..]);
assert_eq!(writer.position(), 0); assert_eq!(writer.position(), 0);
assert_eq!(writer.write_vectored(&[IoVec::new(&[0])]).unwrap(), 1); assert_eq!(writer.write_vectored(&[IoSlice::new(&[0])]).unwrap(), 1);
assert_eq!(writer.position(), 1); assert_eq!(writer.position(), 1);
assert_eq!( assert_eq!(
writer.write_vectored( writer.write_vectored(
&[IoVec::new(&[1, 2, 3]), IoVec::new(&[4, 5, 6, 7])], &[IoSlice::new(&[1, 2, 3]), IoSlice::new(&[4, 5, 6, 7])],
).unwrap(), ).unwrap(),
7, 7,
); );
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);
assert_eq!(writer.write_vectored(&[]).unwrap(), 0); assert_eq!(writer.write_vectored(&[]).unwrap(), 0);
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);


assert_eq!(writer.write_vectored(&[IoVec::new(&[8, 9])]).unwrap(), 1); assert_eq!(writer.write_vectored(&[IoSlice::new(&[8, 9])]).unwrap(), 1);
assert_eq!(writer.write_vectored(&[IoVec::new(&[10])]).unwrap(), 0); assert_eq!(writer.write_vectored(&[IoSlice::new(&[10])]).unwrap(), 0);
} }
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
assert_eq!(buf, b); assert_eq!(buf, b);
Expand Down Expand Up @@ -578,11 +578,11 @@ mod tests {
fn test_mem_reader_vectored() { fn test_mem_reader_vectored() {
let mut reader = Cursor::new(vec![0, 1, 2, 3, 4, 5, 6, 7]); let mut reader = Cursor::new(vec![0, 1, 2, 3, 4, 5, 6, 7]);
let mut buf = []; let mut buf = [];
assert_eq!(reader.read_vectored(&mut [IoVecMut::new(&mut buf)]).unwrap(), 0); assert_eq!(reader.read_vectored(&mut [IoSliceMut::new(&mut buf)]).unwrap(), 0);
assert_eq!(reader.position(), 0); assert_eq!(reader.position(), 0);
let mut buf = [0]; let mut buf = [0];
assert_eq!( assert_eq!(
reader.read_vectored(&mut [IoVecMut::new(&mut []), IoVecMut::new(&mut buf)]).unwrap(), reader.read_vectored(&mut [IoSliceMut::new(&mut []), IoSliceMut::new(&mut buf)]).unwrap(),
1, 1,
); );
assert_eq!(reader.position(), 1); assert_eq!(reader.position(), 1);
Expand All @@ -592,7 +592,7 @@ mod tests {
let mut buf2 = [0; 4]; let mut buf2 = [0; 4];
assert_eq!( assert_eq!(
reader.read_vectored( reader.read_vectored(
&mut [IoVecMut::new(&mut buf1), IoVecMut::new(&mut buf2)], &mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2)],
).unwrap(), ).unwrap(),
7, 7,
); );
Expand Down Expand Up @@ -629,11 +629,11 @@ mod tests {
fn test_boxed_slice_reader_vectored() { fn test_boxed_slice_reader_vectored() {
let mut reader = Cursor::new(vec![0, 1, 2, 3, 4, 5, 6, 7].into_boxed_slice()); let mut reader = Cursor::new(vec![0, 1, 2, 3, 4, 5, 6, 7].into_boxed_slice());
let mut buf = []; let mut buf = [];
assert_eq!(reader.read_vectored(&mut [IoVecMut::new(&mut buf)]).unwrap(), 0); assert_eq!(reader.read_vectored(&mut [IoSliceMut::new(&mut buf)]).unwrap(), 0);
assert_eq!(reader.position(), 0); assert_eq!(reader.position(), 0);
let mut buf = [0]; let mut buf = [0];
assert_eq!( assert_eq!(
reader.read_vectored(&mut [IoVecMut::new(&mut []), IoVecMut::new(&mut buf)]).unwrap(), reader.read_vectored(&mut [IoSliceMut::new(&mut []), IoSliceMut::new(&mut buf)]).unwrap(),
1, 1,
); );
assert_eq!(reader.position(), 1); assert_eq!(reader.position(), 1);
Expand All @@ -643,7 +643,7 @@ mod tests {
let mut buf2 = [0; 4]; let mut buf2 = [0; 4];
assert_eq!( assert_eq!(
reader.read_vectored( reader.read_vectored(
&mut [IoVecMut::new(&mut buf1), IoVecMut::new(&mut buf2)], &mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2)],
).unwrap(), ).unwrap(),
7, 7,
); );
Expand Down Expand Up @@ -689,10 +689,10 @@ mod tests {
let in_buf = vec![0, 1, 2, 3, 4, 5, 6, 7]; let in_buf = vec![0, 1, 2, 3, 4, 5, 6, 7];
let reader = &mut &in_buf[..]; let reader = &mut &in_buf[..];
let mut buf = []; let mut buf = [];
assert_eq!(reader.read_vectored(&mut [IoVecMut::new(&mut buf)]).unwrap(), 0); assert_eq!(reader.read_vectored(&mut [IoSliceMut::new(&mut buf)]).unwrap(), 0);
let mut buf = [0]; let mut buf = [0];
assert_eq!( assert_eq!(
reader.read_vectored(&mut [IoVecMut::new(&mut []), IoVecMut::new(&mut buf)]).unwrap(), reader.read_vectored(&mut [IoSliceMut::new(&mut []), IoSliceMut::new(&mut buf)]).unwrap(),
1, 1,
); );
assert_eq!(reader.len(), 7); assert_eq!(reader.len(), 7);
Expand All @@ -702,7 +702,7 @@ mod tests {
let mut buf2 = [0; 4]; let mut buf2 = [0; 4];
assert_eq!( assert_eq!(
reader.read_vectored( reader.read_vectored(
&mut [IoVecMut::new(&mut buf1), IoVecMut::new(&mut buf2)], &mut [IoSliceMut::new(&mut buf1), IoSliceMut::new(&mut buf2)],
).unwrap(), ).unwrap(),
7, 7,
); );
Expand Down
18 changes: 9 additions & 9 deletions src/libstd/io/impls.rs
@@ -1,6 +1,6 @@
use crate::cmp; use crate::cmp;
use crate::io::{self, SeekFrom, Read, Initializer, Write, Seek, BufRead, Error, ErrorKind, IoVecMut, use crate::io::{self, SeekFrom, Read, Initializer, Write, Seek, BufRead, Error, ErrorKind, IoSliceMut,
IoVec}; IoSlice};
use crate::fmt; use crate::fmt;
use crate::mem; use crate::mem;


Expand All @@ -15,7 +15,7 @@ impl<R: Read + ?Sized> Read for &mut R {
} }


#[inline] #[inline]
fn read_vectored(&mut self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
(**self).read_vectored(bufs) (**self).read_vectored(bufs)
} }


Expand Down Expand Up @@ -45,7 +45,7 @@ impl<W: Write + ?Sized> Write for &mut W {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> { (**self).write(buf) } fn write(&mut self, buf: &[u8]) -> io::Result<usize> { (**self).write(buf) }


#[inline] #[inline]
fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
(**self).write_vectored(bufs) (**self).write_vectored(bufs)
} }


Expand Down Expand Up @@ -94,7 +94,7 @@ impl<R: Read + ?Sized> Read for Box<R> {
} }


#[inline] #[inline]
fn read_vectored(&mut self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
(**self).read_vectored(bufs) (**self).read_vectored(bufs)
} }


Expand Down Expand Up @@ -124,7 +124,7 @@ impl<W: Write + ?Sized> Write for Box<W> {
fn write(&mut self, buf: &[u8]) -> io::Result<usize> { (**self).write(buf) } fn write(&mut self, buf: &[u8]) -> io::Result<usize> { (**self).write(buf) }


#[inline] #[inline]
fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
(**self).write_vectored(bufs) (**self).write_vectored(bufs)
} }


Expand Down Expand Up @@ -207,7 +207,7 @@ impl Read for &[u8] {
} }


#[inline] #[inline]
fn read_vectored(&mut self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
let mut nread = 0; let mut nread = 0;
for buf in bufs { for buf in bufs {
nread += self.read(buf)?; nread += self.read(buf)?;
Expand Down Expand Up @@ -280,7 +280,7 @@ impl Write for &mut [u8] {
} }


#[inline] #[inline]
fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
let mut nwritten = 0; let mut nwritten = 0;
for buf in bufs { for buf in bufs {
nwritten += self.write(buf)?; nwritten += self.write(buf)?;
Expand Down Expand Up @@ -316,7 +316,7 @@ impl Write for Vec<u8> {
} }


#[inline] #[inline]
fn write_vectored(&mut self, bufs: &[IoVec<'_>]) -> io::Result<usize> { fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
let len = bufs.iter().map(|b| b.len()).sum(); let len = bufs.iter().map(|b| b.len()).sum();
self.reserve(len); self.reserve(len);
for buf in bufs { for buf in bufs {
Expand Down

0 comments on commit bd177f3

Please sign in to comment.