diff --git a/src/bytes.rs b/src/bytes.rs index 20af87167204fbd0d071e940d91abf0c53aade13..edc2e3a7ed36e912bfbb930962199cdbad74ad60 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -1164,6 +1164,16 @@ impl BufMut for BytesMut { self.advance_mut(len); } } + + #[inline] + fn put_u8(&mut self, n: u8) { + self.inner.put_u8(n); + } + + #[inline] + fn put_i8(&mut self, n: i8) { + self.put_u8(n as u8); + } } impl IntoBuf for BytesMut { @@ -1463,6 +1473,25 @@ impl Inner { } } + /// Insert a byte into the next slot and advance the len by 1. + #[inline] + fn put_u8(&mut self, n: u8) { + if self.is_inline() { + let len = self.inline_len(); + assert!(len < INLINE_CAP); + unsafe { + *self.inline_ptr().offset(len as isize) = n; + } + self.set_inline_len(len + 1); + } else { + assert!(self.len < self.cap); + unsafe { + *self.ptr.offset(self.len as isize) = n; + } + self.len += 1; + } + } + #[inline] fn len(&self) -> usize { if self.is_inline() {