use std::ptr::NonNull;
use crate::Soars;
#[doc(hidden)]
pub unsafe trait SoaRaw: Copy + Clone {
type Item: Soars;
fn dangling() -> Self;
unsafe fn from_parts(ptr: NonNull<u8>, capacity: usize) -> Self;
fn into_parts(self) -> NonNull<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 Soars>::Ref<'a>;
unsafe fn get_mut<'a>(self) -> <Self::Item as Soars>::RefMut<'a>;
#[must_use]
unsafe fn offset(self, count: usize) -> Self;
unsafe fn slices<'a>(self, len: usize) -> <Self::Item as Soars>::Slices<'a>;
unsafe fn slices_mut<'a>(self, len: usize) -> <Self::Item as Soars>::SlicesMut<'a>;
}