use bytes::BufMut;
use bytes::buf::UninitSlice;
use crate::BytesBuf;
unsafe impl BufMut for BytesBuf {
#[cfg_attr(test, mutants::skip)] #[inline]
fn remaining_mut(&self) -> usize {
self.remaining_capacity()
}
#[cfg_attr(test, mutants::skip)] #[inline]
unsafe fn advance_mut(&mut self, cnt: usize) {
unsafe {
self.advance(cnt);
}
}
#[cfg_attr(test, mutants::skip)] #[inline]
fn chunk_mut(&mut self) -> &mut UninitSlice {
UninitSlice::uninit(self.first_unfilled_slice())
}
}
#[cfg_attr(coverage_nightly, coverage(off))]
#[cfg(test)]
mod tests {
use super::*;
use crate::mem::testing::TransparentMemory;
#[test]
fn buf_mut_compat() {
let memory = TransparentMemory::new();
let mut buf = memory.reserve(100);
assert_eq!(BufMut::remaining_mut(&buf), 100);
buf.reserve(200, &memory);
assert_eq!(BufMut::remaining_mut(&buf), 200);
let chunk = BufMut::chunk_mut(&mut buf);
assert_eq!(chunk.len(), 100);
unsafe {
BufMut::advance_mut(&mut buf, 50);
}
let chunk = BufMut::chunk_mut(&mut buf);
assert_eq!(chunk.len(), 50);
unsafe {
BufMut::advance_mut(&mut buf, 50);
}
let chunk = BufMut::chunk_mut(&mut buf);
assert_eq!(chunk.len(), 100);
unsafe {
BufMut::advance_mut(&mut buf, 100);
}
let chunk = BufMut::chunk_mut(&mut buf);
assert_eq!(chunk.len(), 0);
}
}