use crate::data::refine::delta::SliceDelta;
use crate::mesh_error::MeshSieveError;
pub trait SliceStorage<V: Clone>: Send + Sync {
fn total_len(&self) -> usize;
fn resize(&mut self, new_len: usize) -> Result<(), MeshSieveError>;
fn read_slice(&self, offset: usize, len: usize) -> Result<Vec<V>, MeshSieveError>;
fn write_slice(&mut self, offset: usize, src: &[V]) -> Result<(), MeshSieveError>;
fn apply_delta<D: SliceDelta<V> + 'static>(
&mut self,
src_off: usize,
dst_off: usize,
len: usize,
delta: &D,
) -> Result<(), MeshSieveError>;
}