From fa44c7e35540be6516c506b753d030125ac3331a Mon Sep 17 00:00:00 2001 From: Stepan Koltsov <stepan.koltsov@gmail.com> Date: Tue, 2 May 2017 21:28:12 +0300 Subject: [PATCH] BytesMut::extend_from_slice shortcut (#112) Similar to `Vec::extend_from_slice`: it a reserve followed by memcopy. --- src/bytes.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/bytes.rs b/src/bytes.rs index 6964ce1..e71d24b 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -1160,6 +1160,27 @@ impl BytesMut { pub fn reserve(&mut self, additional: usize) { self.inner.reserve(additional) } + + /// Append given bytes to this object. + /// + /// If this `BytesMut` object has not enough capacity, it is resized first. + /// So unlike `put_slice` operation, `extend_from_slice` does not panic. + /// + /// # Examples + /// + /// ``` + /// use bytes::BytesMut; + /// + /// let mut buf = BytesMut::with_capacity(0); + /// buf.extend_from_slice(b"aaabbb"); + /// buf.extend_from_slice(b"cccddd"); + /// + /// assert_eq!(b"aaabbbcccddd", &buf[..]); + /// ``` + pub fn extend_from_slice(&mut self, extend: &[u8]) { + self.reserve(extend.len()); + self.put_slice(extend); + } } impl BufMut for BytesMut { -- GitLab