diff options
Diffstat (limited to 'src/buf/buf_impl.rs')
-rw-r--r-- | src/buf/buf_impl.rs | 100 |
1 files changed, 88 insertions, 12 deletions
diff --git a/src/buf/buf_impl.rs b/src/buf/buf_impl.rs index 9ba1269..843db71 100644 --- a/src/buf/buf_impl.rs +++ b/src/buf/buf_impl.rs @@ -809,7 +809,8 @@ pub trait Buf { } } -impl<T: Buf + ?Sized> Buf for &mut T { +macro_rules! deref_forward_buf { + () => ( fn remaining(&self) -> usize { (**self).remaining() } @@ -826,25 +827,100 @@ impl<T: Buf + ?Sized> Buf for &mut T { fn advance(&mut self, cnt: usize) { (**self).advance(cnt) } -} -impl<T: Buf + ?Sized> Buf for Box<T> { - fn remaining(&self) -> usize { - (**self).remaining() + fn has_remaining(&self) -> bool { + (**self).has_remaining() } - fn bytes(&self) -> &[u8] { - (**self).bytes() + fn copy_to_slice(&mut self, dst: &mut [u8]) { + (**self).copy_to_slice(dst) } - #[cfg(feature = "std")] - fn bytes_vectored<'b>(&'b self, dst: &mut [IoSlice<'b>]) -> usize { - (**self).bytes_vectored(dst) + fn get_u8(&mut self) -> u8 { + (**self).get_u8() } - fn advance(&mut self, cnt: usize) { - (**self).advance(cnt) + fn get_i8(&mut self) -> i8 { + (**self).get_i8() + } + + fn get_u16(&mut self) -> u16 { + (**self).get_u16() + } + + fn get_u16_le(&mut self) -> u16 { + (**self).get_u16_le() + } + + fn get_i16(&mut self) -> i16 { + (**self).get_i16() + } + + fn get_i16_le(&mut self) -> i16 { + (**self).get_i16_le() + } + + fn get_u32(&mut self) -> u32 { + (**self).get_u32() + } + + fn get_u32_le(&mut self) -> u32 { + (**self).get_u32_le() + } + + fn get_i32(&mut self) -> i32 { + (**self).get_i32() } + + fn get_i32_le(&mut self) -> i32 { + (**self).get_i32_le() + } + + fn get_u64(&mut self) -> u64 { + (**self).get_u64() + } + + fn get_u64_le(&mut self) -> u64 { + (**self).get_u64_le() + } + + fn get_i64(&mut self) -> i64 { + (**self).get_i64() + } + + fn get_i64_le(&mut self) -> i64 { + (**self).get_i64_le() + } + + fn get_uint(&mut self, nbytes: usize) -> u64 { + (**self).get_uint(nbytes) + } + + fn get_uint_le(&mut self, nbytes: usize) -> u64 { + (**self).get_uint_le(nbytes) + } + + fn get_int(&mut self, nbytes: usize) -> i64 { + (**self).get_int(nbytes) + } + + fn get_int_le(&mut self, nbytes: usize) -> i64 { + (**self).get_int_le(nbytes) + } + + fn to_bytes(&mut self) -> crate::Bytes { + (**self).to_bytes() + } + + ) +} + +impl<T: Buf + ?Sized> Buf for &mut T { + deref_forward_buf!(); +} + +impl<T: Buf + ?Sized> Buf for Box<T> { + deref_forward_buf!(); } impl Buf for &[u8] { |