@@ -264,6 +264,7 @@ use fmt;
264
264
use slice;
265
265
use str;
266
266
use memchr;
267
+ use ops:: { Deref , DerefMut } ;
267
268
use ptr;
268
269
use sys;
269
270
@@ -531,7 +532,7 @@ pub trait Read {
531
532
/// `read`.
532
533
#[ unstable( feature = "iovec" , issue = "0" ) ]
533
534
fn read_vectored ( & mut self , bufs : & mut [ IoVecMut < ' _ > ] ) -> Result < usize > {
534
- match bufs. iter_mut ( ) . map ( |b| b . as_mut_slice ( ) ) . find ( |b| !b. is_empty ( ) ) {
535
+ match bufs. iter_mut ( ) . find ( |b| !b. is_empty ( ) ) {
535
536
Some ( buf) => self . read ( buf) ,
536
537
None => Ok ( 0 ) ,
537
538
}
@@ -896,7 +897,7 @@ pub struct IoVecMut<'a>(sys::io::IoVecMut<'a>);
896
897
#[ unstable( feature = "iovec" , issue = "0" ) ]
897
898
impl < ' a > fmt:: Debug for IoVecMut < ' a > {
898
899
fn fmt ( & self , fmt : & mut fmt:: Formatter ) -> fmt:: Result {
899
- fmt:: Debug :: fmt ( self . as_slice ( ) , fmt)
900
+ fmt:: Debug :: fmt ( self . 0 . as_slice ( ) , fmt)
900
901
}
901
902
}
902
903
@@ -911,18 +912,22 @@ impl<'a> IoVecMut<'a> {
911
912
pub fn new ( buf : & ' a mut [ u8 ] ) -> IoVecMut < ' a > {
912
913
IoVecMut ( sys:: io:: IoVecMut :: new ( buf) )
913
914
}
915
+ }
916
+
917
+ #[ unstable( feature = "iovec" , issue = "0" ) ]
918
+ impl < ' a > Deref for IoVecMut < ' a > {
919
+ type Target = [ u8 ] ;
914
920
915
- /// Returns a shared reference to the inner slice.
916
- #[ unstable( feature = "iovec" , issue = "0" ) ]
917
921
#[ inline]
918
- pub fn as_slice ( & self ) -> & ' a [ u8 ] {
922
+ fn deref ( & self ) -> & [ u8 ] {
919
923
self . 0 . as_slice ( )
920
924
}
925
+ }
921
926
922
- /// Returns a mutable reference to the inner slice.
923
- # [ unstable ( feature = "iovec" , issue = "0" ) ]
927
+ # [ unstable ( feature = "iovec" , issue = "0" ) ]
928
+ impl < ' a > DerefMut for IoVecMut < ' a > {
924
929
#[ inline]
925
- pub fn as_mut_slice ( & mut self ) -> & ' a mut [ u8 ] {
930
+ fn deref_mut ( & mut self ) -> & mut [ u8 ] {
926
931
self . 0 . as_mut_slice ( )
927
932
}
928
933
}
@@ -939,7 +944,7 @@ pub struct IoVec<'a>(sys::io::IoVec<'a>);
939
944
#[ unstable( feature = "iovec" , issue = "0" ) ]
940
945
impl < ' a > fmt:: Debug for IoVec < ' a > {
941
946
fn fmt ( & self , fmt : & mut fmt:: Formatter ) -> fmt:: Result {
942
- fmt:: Debug :: fmt ( self . as_slice ( ) , fmt)
947
+ fmt:: Debug :: fmt ( self . 0 . as_slice ( ) , fmt)
943
948
}
944
949
}
945
950
@@ -954,11 +959,14 @@ impl<'a> IoVec<'a> {
954
959
pub fn new ( buf : & ' a [ u8 ] ) -> IoVec < ' a > {
955
960
IoVec ( sys:: io:: IoVec :: new ( buf) )
956
961
}
962
+ }
963
+
964
+ #[ unstable( feature = "iovec" , issue = "0" ) ]
965
+ impl < ' a > Deref for IoVec < ' a > {
966
+ type Target = [ u8 ] ;
957
967
958
- /// Returns a shared reference to the inner slice.
959
- #[ unstable( feature = "iovec" , issue = "0" ) ]
960
968
#[ inline]
961
- pub fn as_slice ( & self ) -> & ' a [ u8 ] {
969
+ fn deref ( & self ) -> & [ u8 ] {
962
970
self . 0 . as_slice ( )
963
971
}
964
972
}
@@ -1103,7 +1111,7 @@ pub trait Write {
1103
1111
/// `write`.
1104
1112
#[ unstable( feature = "iovec" , issue = "0" ) ]
1105
1113
fn write_vectored ( & mut self , bufs : & [ IoVec < ' _ > ] ) -> Result < usize > {
1106
- match bufs. iter ( ) . map ( |b| b . as_slice ( ) ) . find ( |b| !b. is_empty ( ) ) {
1114
+ match bufs. iter ( ) . find ( |b| !b. is_empty ( ) ) {
1107
1115
Some ( buf) => self . write ( buf) ,
1108
1116
None => Ok ( 0 ) ,
1109
1117
}
@@ -1813,7 +1821,7 @@ impl<T: Read, U: Read> Read for Chain<T, U> {
1813
1821
fn read_vectored ( & mut self , bufs : & mut [ IoVecMut < ' _ > ] ) -> Result < usize > {
1814
1822
if !self . done_first {
1815
1823
match self . first . read_vectored ( bufs) ? {
1816
- 0 if bufs. iter ( ) . any ( |b| !b. as_slice ( ) . is_empty ( ) ) => self . done_first = true ,
1824
+ 0 if bufs. iter ( ) . any ( |b| !b. is_empty ( ) ) => self . done_first = true ,
1817
1825
n => return Ok ( n) ,
1818
1826
}
1819
1827
}
0 commit comments