use core::ptr;
use crate::allocator::AllocatorProvider;
use crate::vec::types::EcoVec;
impl<A> EcoVec<u8, A>
where
A: AllocatorProvider + Clone,
{
#[allow(unused)]
#[inline]
pub(crate) fn extend_from_byte_slice(&mut self, bytes: &[u8]) {
if bytes.is_empty() {
return;
}
self.reserve(bytes.len());
unsafe { self.extend_from_byte_slice_unchecked(bytes) }
}
#[inline]
pub(crate) fn make_unique_bytes(&mut self) {
if !self.is_unique() {
let mut vec = Self::with_capacity_in(self.len, self.alloc.clone());
unsafe { vec.extend_from_byte_slice_unchecked(self.as_slice()) };
*self = vec;
}
}
#[inline(always)]
pub(crate) unsafe fn extend_from_byte_slice_unchecked(&mut self, bytes: &[u8]) {
unsafe {
ptr::copy_nonoverlapping(
bytes.as_ptr(),
self.data_mut().add(self.len),
bytes.len(),
);
}
self.len += bytes.len();
}
}