#[cfg(all(feature = "async"))]
use crate::iters_components::async_iters::{mutable::AsyncCompMut, non_mutable::AsyncComp};
#[cfg(feature = "alloc")]
use crate::storage_components::HeapStorage;
#[cfg(all(feature = "alloc", feature = "vmem", unix))]
use crate::storage_components::VmemStorage;
use crate::{
OneRingBuf,
iters_components::{
local_iters::{mutable::LocalCompMut, non_mutable::LocalComp},
shared_iters::{mutable::SharedCompMut, non_mutable::SharedComp},
},
storage_components::StackStorage,
};
pub type LocalStackRB<'buf, T, const N: usize> = OneRingBuf<StackStorage<'buf, T, N>, LocalComp>;
pub type SharedStackRB<'buf, T, const N: usize> = OneRingBuf<StackStorage<'buf, T, N>, SharedComp>;
pub type LocalStackRBMut<'buf, T, const N: usize> =
OneRingBuf<StackStorage<'buf, T, N>, LocalCompMut>;
pub type SharedStackRBMut<'buf, T, const N: usize> =
OneRingBuf<StackStorage<'buf, T, N>, SharedCompMut>;
#[cfg(feature = "alloc")]
pub type LocalHeapRB<T> = OneRingBuf<HeapStorage<T>, LocalComp>;
#[cfg(feature = "alloc")]
pub type SharedHeapRB<T> = OneRingBuf<HeapStorage<T>, SharedComp>;
#[cfg(feature = "alloc")]
pub type LocalHeapRBMut<T> = OneRingBuf<HeapStorage<T>, LocalCompMut>;
#[cfg(feature = "alloc")]
pub type SharedHeapRBMut<T> = OneRingBuf<HeapStorage<T>, SharedCompMut>;
#[cfg(all(feature = "alloc", feature = "vmem", unix))]
pub type LocalVmemRB<T> = OneRingBuf<VmemStorage<T>, LocalComp>;
#[cfg(all(feature = "alloc", feature = "vmem", unix))]
pub type SharedVmemRB<T> = OneRingBuf<VmemStorage<T>, SharedComp>;
#[cfg(all(feature = "alloc", feature = "vmem", unix))]
pub type LocalVmemRBMut<T> = OneRingBuf<VmemStorage<T>, LocalCompMut>;
#[cfg(all(feature = "alloc", feature = "vmem", unix))]
pub type SharedVmemRBMut<T> = OneRingBuf<VmemStorage<T>, SharedCompMut>;
#[cfg(feature = "async")]
pub type AsyncStackRB<'buf, T, const N: usize> = OneRingBuf<StackStorage<'buf, T, N>, AsyncComp>;
#[cfg(feature = "async")]
pub type AsyncStackRBMut<'buf, T, const N: usize> =
OneRingBuf<StackStorage<'buf, T, N>, AsyncCompMut>;
#[cfg(feature = "async")]
unsafe impl<T, const N: usize> Sync for AsyncStackRB<'_, T, N> {}
#[cfg(feature = "async")]
unsafe impl<T, const N: usize> Sync for AsyncStackRBMut<'_, T, N> {}
#[cfg(all(feature = "async", feature = "alloc"))]
pub type AsyncHeapRB<T> = OneRingBuf<HeapStorage<T>, AsyncComp>;
#[cfg(all(feature = "async", feature = "alloc"))]
pub type AsyncHeapRBMut<T> = OneRingBuf<HeapStorage<T>, AsyncCompMut>;
#[cfg(all(feature = "async", feature = "alloc"))]
unsafe impl<T> Sync for AsyncHeapRB<T> {}
#[cfg(all(feature = "async", feature = "alloc"))]
unsafe impl<T> Sync for AsyncHeapRBMut<T> {}
#[cfg(all(feature = "async", feature = "alloc", feature = "vmem", unix))]
pub type AsyncVmemRB<T> = OneRingBuf<VmemStorage<T>, AsyncComp>;
#[cfg(all(feature = "async", feature = "alloc", feature = "vmem", unix))]
pub type AsyncVmemRBMut<T> = OneRingBuf<VmemStorage<T>, AsyncCompMut>;
#[cfg(all(feature = "async", feature = "alloc", feature = "vmem", unix))]
unsafe impl<T> Sync for AsyncVmemRB<T> {}
#[cfg(all(feature = "async", feature = "alloc", feature = "vmem", unix))]
unsafe impl<T> Sync for AsyncVmemRBMut<T> {}