Skip to content

Commit

Permalink
feat: impl WriteExt for &mut BytesMut
Browse files Browse the repository at this point in the history
  • Loading branch information
qRoC authored and liuq19 committed Dec 30, 2024
1 parent 9d198b8 commit 5f852a2
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,24 @@ impl WriteExt for Writer<BytesMut> {
}
}

impl WriteExt for Writer<&mut BytesMut> {
#[inline(always)]
unsafe fn flush_len(&mut self, additional: usize) -> io::Result<()> {
let new_len = self.get_ref().len() + additional;
self.get_mut().set_len(new_len);
Ok(())
}

#[inline(always)]
fn reserve_with(&mut self, additional: usize) -> io::Result<&mut [MaybeUninit<u8>]> {
self.get_mut().reserve(additional);
unsafe {
let ptr = self.get_mut().as_mut_ptr().add(self.get_ref().len()) as *mut MaybeUninit<u8>;
Ok(from_raw_parts_mut(ptr, additional))
}
}
}

impl<W: WriteExt + ?Sized> WriteExt for IoBufWriter<W> {
fn reserve_with(&mut self, additional: usize) -> io::Result<&mut [MaybeUninit<u8>]> {
self.get_mut().reserve_with(additional)
Expand Down

0 comments on commit 5f852a2

Please sign in to comment.