diff --git a/Cargo.toml b/Cargo.toml index 553e558..ce80a61 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ categories = ["network-programming", "data-structures"] [dependencies] byteorder = "1.0.0" -iovec = "0.1" +iovec = { git = "https://github.com/carllerche/iovec" } serde = { version = "1.0", optional = true } [dev-dependencies] diff --git a/src/buf/buf.rs b/src/buf/buf.rs index 42280e7..4871e68 100644 --- a/src/buf/buf.rs +++ b/src/buf/buf.rs @@ -113,7 +113,7 @@ pub trait Buf { /// with `dst` being a zero length slice. /// /// [`writev`]: http://man7.org/linux/man-pages/man2/readv.2.html - fn bytes_vec<'a>(&'a self, dst: &mut [&'a IoVec]) -> usize { + fn bytes_vec<'a>(&'a self, dst: &mut [IoVec<'a>]) -> usize { if dst.is_empty() { return 0; } @@ -662,7 +662,7 @@ impl<'a, T: Buf + ?Sized> Buf for &'a mut T { (**self).bytes() } - fn bytes_vec<'b>(&'b self, dst: &mut [&'b IoVec]) -> usize { + fn bytes_vec<'b>(&'b self, dst: &mut [IoVec<'b>]) -> usize { (**self).bytes_vec(dst) } @@ -680,7 +680,7 @@ impl Buf for Box { (**self).bytes() } - fn bytes_vec<'b>(&'b self, dst: &mut [&'b IoVec]) -> usize { + fn bytes_vec<'b>(&'b self, dst: &mut [IoVec<'b>]) -> usize { (**self).bytes_vec(dst) } diff --git a/src/buf/buf_mut.rs b/src/buf/buf_mut.rs index b03103a..72eb5cb 100644 --- a/src/buf/buf_mut.rs +++ b/src/buf/buf_mut.rs @@ -1,6 +1,6 @@ use super::{IntoBuf, Writer}; use byteorder::ByteOrder; -use iovec::IoVec; +use iovec::IoVecMut; use std::{cmp, io, ptr, usize}; @@ -188,7 +188,7 @@ pub trait BufMut { /// with `dst` being a zero length slice. /// /// [`readv`]: http://man7.org/linux/man-pages/man2/readv.2.html - unsafe fn bytes_vec_mut<'a>(&'a mut self, dst: &mut [&'a mut IoVec]) -> usize { + unsafe fn bytes_vec_mut<'a>(&'a mut self, dst: &mut [IoVecMut<'a>]) -> usize { if dst.is_empty() { return 0; } @@ -645,7 +645,7 @@ impl<'a, T: BufMut + ?Sized> BufMut for &'a mut T { (**self).bytes_mut() } - unsafe fn bytes_vec_mut<'b>(&'b mut self, dst: &mut [&'b mut IoVec]) -> usize { + unsafe fn bytes_vec_mut<'b>(&'b mut self, dst: &mut [IoVecMut<'b>]) -> usize { (**self).bytes_vec_mut(dst) } @@ -663,7 +663,7 @@ impl BufMut for Box { (**self).bytes_mut() } - unsafe fn bytes_vec_mut<'b>(&'b mut self, dst: &mut [&'b mut IoVec]) -> usize { + unsafe fn bytes_vec_mut<'b>(&'b mut self, dst: &mut [IoVecMut<'b>]) -> usize { (**self).bytes_vec_mut(dst) } diff --git a/src/buf/chain.rs b/src/buf/chain.rs index 7dd44ab..76f1045 100644 --- a/src/buf/chain.rs +++ b/src/buf/chain.rs @@ -1,5 +1,5 @@ use {Buf, BufMut}; -use iovec::IoVec; +use iovec::{IoVec, IoVecMut}; /// A `Chain` sequences two buffers. /// @@ -177,7 +177,7 @@ impl Buf for Chain self.b.advance(cnt); } - fn bytes_vec<'a>(&'a self, dst: &mut [&'a IoVec]) -> usize { + fn bytes_vec<'a>(&'a self, dst: &mut [IoVec<'a>]) -> usize { let mut n = self.a.bytes_vec(dst); n += self.b.bytes_vec(&mut dst[n..]); n @@ -218,7 +218,7 @@ impl BufMut for Chain self.b.advance_mut(cnt); } - unsafe fn bytes_vec_mut<'a>(&'a mut self, dst: &mut [&'a mut IoVec]) -> usize { + unsafe fn bytes_vec_mut<'a>(&'a mut self, dst: &mut [IoVecMut<'a>]) -> usize { let mut n = self.a.bytes_vec_mut(dst); n += self.b.bytes_vec_mut(&mut dst[n..]); n diff --git a/tests/test_buf.rs b/tests/test_buf.rs index db51692..0243e25 100644 --- a/tests/test_buf.rs +++ b/tests/test_buf.rs @@ -51,7 +51,7 @@ fn test_bufs_vec() { let b1: &[u8] = &mut [0]; let b2: &[u8] = &mut [0]; - let mut dst: [&IoVec; 2] = + let mut dst: [IoVec; 2] = [b1.into(), b2.into()]; assert_eq!(1, buf.bytes_vec(&mut dst[..])); diff --git a/tests/test_buf_mut.rs b/tests/test_buf_mut.rs index 896e31d..8b5e3db 100644 --- a/tests/test_buf_mut.rs +++ b/tests/test_buf_mut.rs @@ -3,7 +3,7 @@ extern crate byteorder; extern crate iovec; use bytes::{BufMut, BytesMut}; -use iovec::IoVec; +use iovec::IoVecMut; use std::usize; use std::fmt::Write; @@ -77,7 +77,7 @@ fn test_bufs_vec_mut() { let mut buf = BytesMut::from(&b"hello world"[..]); unsafe { - let mut dst: [&mut IoVec; 2] = mem::zeroed(); + let mut dst: [IoVecMut; 2] = mem::zeroed(); assert_eq!(1, buf.bytes_vec_mut(&mut dst[..])); } } diff --git a/tests/test_chain.rs b/tests/test_chain.rs index 2789e7c..049a8a2 100644 --- a/tests/test_chain.rs +++ b/tests/test_chain.rs @@ -59,7 +59,7 @@ fn vectored_read() { let b2: &[u8] = &mut [0]; let b3: &[u8] = &mut [0]; let b4: &[u8] = &mut [0]; - let mut iovecs: [&IoVec; 4] = + let mut iovecs: [IoVec; 4] = [b1.into(), b2.into(), b3.into(), b4.into()]; assert_eq!(2, buf.bytes_vec(&mut iovecs)); @@ -76,7 +76,7 @@ fn vectored_read() { let b2: &[u8] = &mut [0]; let b3: &[u8] = &mut [0]; let b4: &[u8] = &mut [0]; - let mut iovecs: [&IoVec; 4] = + let mut iovecs: [IoVec; 4] = [b1.into(), b2.into(), b3.into(), b4.into()]; assert_eq!(2, buf.bytes_vec(&mut iovecs)); @@ -93,7 +93,7 @@ fn vectored_read() { let b2: &[u8] = &mut [0]; let b3: &[u8] = &mut [0]; let b4: &[u8] = &mut [0]; - let mut iovecs: [&IoVec; 4] = + let mut iovecs: [IoVec; 4] = [b1.into(), b2.into(), b3.into(), b4.into()]; assert_eq!(1, buf.bytes_vec(&mut iovecs)); @@ -110,7 +110,7 @@ fn vectored_read() { let b2: &[u8] = &mut [0]; let b3: &[u8] = &mut [0]; let b4: &[u8] = &mut [0]; - let mut iovecs: [&IoVec; 4] = + let mut iovecs: [IoVec; 4] = [b1.into(), b2.into(), b3.into(), b4.into()]; assert_eq!(1, buf.bytes_vec(&mut iovecs));