Struct heron::rapier_plugin::rapier2d::crossbeam::queue::ArrayQueue
pub struct ArrayQueue<T> { /* private fields */ }
Expand description
A bounded multi-producer multi-consumer queue.
This queue allocates a fixed-capacity buffer on construction, which is used to store pushed
elements. The queue cannot hold more elements than the buffer allows. Attempting to push an
element into a full queue will fail. Alternatively, force_push
makes it possible for
this queue to be used as a ring-buffer. Having a buffer allocated upfront makes this queue
a bit faster than SegQueue
.
Examples
use crossbeam_queue::ArrayQueue;
let q = ArrayQueue::new(2);
assert_eq!(q.push('a'), Ok(()));
assert_eq!(q.push('b'), Ok(()));
assert_eq!(q.push('c'), Err('c'));
assert_eq!(q.pop(), Some('a'));
Implementations
impl<T> ArrayQueue<T>
impl<T> ArrayQueue<T>
pub fn new(cap: usize) -> ArrayQueue<T>
pub fn new(cap: usize) -> ArrayQueue<T>
pub fn push(&self, value: T) -> Result<(), T>
pub fn push(&self, value: T) -> Result<(), T>
Attempts to push an element into the queue.
If the queue is full, the element is returned back as an error.
Examples
use crossbeam_queue::ArrayQueue;
let q = ArrayQueue::new(1);
assert_eq!(q.push(10), Ok(()));
assert_eq!(q.push(20), Err(20));
pub fn force_push(&self, value: T) -> Option<T>
pub fn force_push(&self, value: T) -> Option<T>
Pushes an element into the queue, replacing the oldest element if necessary.
If the queue is full, the oldest element is replaced and returned,
otherwise None
is returned.
Examples
use crossbeam_queue::ArrayQueue;
let q = ArrayQueue::new(2);
assert_eq!(q.force_push(10), None);
assert_eq!(q.force_push(20), None);
assert_eq!(q.force_push(30), Some(10));
assert_eq!(q.pop(), Some(20));
pub fn pop(&self) -> Option<T>
pub fn pop(&self) -> Option<T>
Attempts to pop an element from the queue.
If the queue is empty, None
is returned.
Examples
use crossbeam_queue::ArrayQueue;
let q = ArrayQueue::new(1);
assert_eq!(q.push(10), Ok(()));
assert_eq!(q.pop(), Some(10));
assert!(q.pop().is_none());
pub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Returns the capacity of the queue.
Examples
use crossbeam_queue::ArrayQueue;
let q = ArrayQueue::<i32>::new(100);
assert_eq!(q.capacity(), 100);
pub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true
if the queue is empty.
Examples
use crossbeam_queue::ArrayQueue;
let q = ArrayQueue::new(100);
assert!(q.is_empty());
q.push(1).unwrap();
assert!(!q.is_empty());
Trait Implementations
impl<T> Debug for ArrayQueue<T>
impl<T> Debug for ArrayQueue<T>
impl<T> Drop for ArrayQueue<T>
impl<T> Drop for ArrayQueue<T>
impl<T> IntoIterator for ArrayQueue<T>
impl<T> IntoIterator for ArrayQueue<T>
type Item = T
type Item = T
type IntoIter = IntoIter<T>
type IntoIter = IntoIter<T>
fn into_iter(self) -> <ArrayQueue<T> as IntoIterator>::IntoIter
fn into_iter(self) -> <ArrayQueue<T> as IntoIterator>::IntoIter
impl<T> Send for ArrayQueue<T>where
T: Send,
impl<T> Sync for ArrayQueue<T>where
T: Send,
Auto Trait Implementations
impl<T> !RefUnwindSafe for ArrayQueue<T>
impl<T> Unpin for ArrayQueue<T>
impl<T> UnwindSafe for ArrayQueue<T>where
T: UnwindSafe,
Blanket Implementations
impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
fn as_bind_group_shader_type(
&self,
_images: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
fn as_bind_group_shader_type(
&self,
_images: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist. Read moresourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read morefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read morefn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read morefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read moresourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read morefn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.