use core::ptr::NonNull;
use crate::components::{Cap, Grow, Index, Insert, Len, Pop, Ptr, Push, Remove, Shrink};
use crate::Sector;
pub struct Locked;
impl crate::components::DefaultIter for Locked {}
impl crate::components::DefaultDrain for Locked {}
impl<T> Sector<Locked, T> {
pub fn get(&self, index: usize) -> Option<&T> {
self.__get(index)
}
pub fn get_mut(&mut self, index: usize) -> Option<&mut T> {
self.__get_mut(index)
}
}
impl<T> Ptr<T> for Sector<Locked, T> {
fn __ptr(&self) -> NonNull<T> {
unsafe { self.as_ptr() }
}
fn __ptr_set(&mut self, new_ptr: NonNull<T>) {
unsafe { Sector::set_ptr(self, new_ptr) };
}
}
impl<T> Len for Sector<Locked, T> {
fn __len(&self) -> usize {
Sector::len(self)
}
fn __len_set(&mut self, new_len: usize) {
unsafe { Sector::set_len(self, new_len) };
}
}
impl<T> Cap for Sector<Locked, T> {
fn __cap(&self) -> usize {
self.capacity()
}
fn __cap_set(&mut self, new_cap: usize) {
unsafe { self.set_capacity(new_cap) };
}
}
unsafe impl<T> Grow<T> for Sector<Locked, T> {
unsafe fn __grow(&mut self, _: usize, _: usize) {}
}
unsafe impl<T> Shrink<T> for Sector<Locked, T> {
unsafe fn __shrink(&mut self, _: usize, _: usize) {}
}
impl<T> Push<T> for Sector<Locked, T> {}
impl<T> Pop<T> for Sector<Locked, T> {}
impl<T> Insert<T> for Sector<Locked, T> {}
impl<T> Index<T> for Sector<Locked, T> {}
impl<T> Remove<T> for Sector<Locked, T> {}
#[cfg(test)]
mod tests {
}