From 268f6f80b4685b53f57706abc6aef31f46b54738 Mon Sep 17 00:00:00 2001 From: Zettroke Date: Tue, 16 Feb 2021 03:35:01 +0300 Subject: [PATCH] override put_slice for &mut [u8] (#483) --- src/buf/buf_mut.rs | 8 ++++++++ tests/test_buf_mut.rs | 3 +++ 2 files changed, 11 insertions(+) diff --git a/src/buf/buf_mut.rs b/src/buf/buf_mut.rs index eccd509..844474f 100644 --- a/src/buf/buf_mut.rs +++ b/src/buf/buf_mut.rs @@ -1012,6 +1012,14 @@ unsafe impl BufMut for &mut [u8] { let (_, b) = core::mem::replace(self, &mut []).split_at_mut(cnt); *self = b; } + + #[inline] + fn put_slice(&mut self, src: &[u8]) { + self[..src.len()].copy_from_slice(src); + unsafe { + self.advance_mut(src.len()); + } + } } unsafe impl BufMut for Vec { diff --git a/tests/test_buf_mut.rs b/tests/test_buf_mut.rs index 8d270e3..b85ab9c 100644 --- a/tests/test_buf_mut.rs +++ b/tests/test_buf_mut.rs @@ -70,6 +70,9 @@ fn test_mut_slice() { let mut v = vec![0, 0, 0, 0]; let mut s = &mut v[..]; s.put_u32(42); + + assert_eq!(s.len(), 0); + assert_eq!(&v, &[0, 0, 0, 42]); } #[test]