use super::traits::{Storage, StorageMut};
pub struct SliceStorage<'a, T> {
slice: &'a [T],
}
impl<'a, T> SliceStorage<'a, T> {
#[inline]
pub const fn new(slice: &'a [T]) -> Self {
Self { slice }
}
}
impl<'a, T> Storage<T> for SliceStorage<'a, T> {
#[inline]
fn as_slice(&self) -> &[T] {
self.slice
}
}
pub struct SliceStorageMut<'a, T> {
slice: &'a mut [T],
}
impl<'a, T> SliceStorageMut<'a, T> {
#[inline]
pub fn new(slice: &'a mut [T]) -> Self {
Self { slice }
}
}
impl<'a, T> Storage<T> for SliceStorageMut<'a, T> {
#[inline]
fn as_slice(&self) -> &[T] {
self.slice
}
}
impl<'a, T> StorageMut<T> for SliceStorageMut<'a, T> {
#[inline]
fn as_mut_slice(&mut self) -> &mut [T] {
self.slice
}
}