concurrency_traits/queue/
reverse.rs1#[cfg(feature = "alloc")]
2use crate::queue::{AsyncPeekQueue, AsyncQueue};
3use crate::queue::{PeekQueue, Queue, TryPeekQueue, TryQueue};
4#[cfg(feature = "alloc")]
5use alloc::boxed::Box;
6#[cfg(feature = "alloc")]
7use async_trait::async_trait;
8
9pub trait TryReverseQueue: TryQueue {
11 fn try_pop_back(&self) -> Option<Self::Item>;
13}
14pub trait ReverseQueue: TryReverseQueue + Queue {
16 fn pop_back(&self) -> Self::Item;
18}
19#[cfg(feature = "alloc")]
21#[async_trait]
22pub trait AsyncReverseQueue: TryReverseQueue + AsyncQueue {
23 async fn pop_back_async(&self) -> Self::Item;
25}
26
27pub trait TryPeekReverseQueue: TryPeekQueue + TryReverseQueue {
29 fn try_peek_back(&self) -> Option<Self::Peeked>;
31}
32pub trait PeekReverseQueue: PeekQueue + ReverseQueue + TryPeekReverseQueue {
34 fn peek_back(&self) -> Self::Peeked;
36}
37#[cfg(feature = "alloc")]
39#[async_trait]
40pub trait AsyncPeekReverseQueue: AsyncPeekQueue + AsyncReverseQueue {
41 async fn peek_back_async(&self) -> Self::Peeked;
43}