Add BorrowedBuf::into_filled{,_mut} methods to allow returning buffer with original lifetime

This commit is contained in:
Alex Saveau
2024-11-02 14:23:01 -04:00
committed by Alex Saveau
parent 07cbbdd693
commit 770b15693a
+20
View File
@@ -108,6 +108,26 @@ pub fn filled_mut(&mut self) -> &mut [u8] {
}
}
/// Returns a shared reference to the filled portion of the buffer with its original lifetime.
#[inline]
pub fn into_filled(self) -> &'data [u8] {
// SAFETY: We only slice the filled part of the buffer, which is always valid
unsafe {
let buf = self.buf.get_unchecked(..self.filled);
MaybeUninit::slice_assume_init_ref(buf)
}
}
/// Returns a mutable reference to the filled portion of the buffer with its original lifetime.
#[inline]
pub fn into_filled_mut(self) -> &'data mut [u8] {
// SAFETY: We only slice the filled part of the buffer, which is always valid
unsafe {
let buf = self.buf.get_unchecked_mut(..self.filled);
MaybeUninit::slice_assume_init_mut(buf)
}
}
/// Returns a cursor over the unfilled part of the buffer.
#[inline]
pub fn unfilled<'this>(&'this mut self) -> BorrowedCursor<'this> {