use crate::Soapy;
#[doc(hidden)]
pub unsafe trait SoaRaw: Copy + Clone {
type Item: Soapy;
fn dangling() -> Self;
unsafe fn from_parts(ptr: *mut u8, capacity: usize) -> Self;
fn into_parts(self) -> *mut u8;
#[must_use]
unsafe fn alloc(capacity: usize) -> Self;
#[must_use]
unsafe fn realloc_grow(
&mut self,
old_capacity: usize,
new_capacity: usize,
length: usize,
) -> Self;
#[must_use]
unsafe fn realloc_shrink(
&mut self,
old_capacity: usize,
new_capacity: usize,
length: usize,
) -> Self;
unsafe fn dealloc(self, old_capacity: usize);
unsafe fn copy_to(self, dst: Self, count: usize);
unsafe fn set(self, element: Self::Item);
unsafe fn get(self) -> Self::Item;
unsafe fn get_ref<'a>(self) -> <Self::Item as Soapy>::Ref<'a>;
unsafe fn get_mut<'a>(self) -> <Self::Item as Soapy>::RefMut<'a>;
#[must_use]
unsafe fn offset(self, count: usize) -> Self;
unsafe fn slices<'a>(self, len: usize) -> <Self::Item as Soapy>::Slices<'a>;
unsafe fn slices_mut<'a>(self, len: usize) -> <Self::Item as Soapy>::SlicesMut<'a>;
}