swap_buffer_queue/
error.rs1use core::fmt;
4
5#[derive(Copy, Clone, Eq, PartialEq)]
9pub enum TryEnqueueError<T> {
10 InsufficientCapacity(T),
12 Closed(T),
14}
15
16impl<T> TryEnqueueError<T> {
17 pub fn into_inner(self) -> T {
19 match self {
20 Self::InsufficientCapacity(v) | Self::Closed(v) => v,
21 }
22 }
23}
24
25impl<T> fmt::Debug for TryEnqueueError<T> {
26 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27 match self {
28 Self::InsufficientCapacity(_) => write!(f, "TryEnqueueError::InsufficientCapacity(_)"),
29 Self::Closed(_) => write!(f, "TryEnqueueError::Closed(_)"),
30 }
31 }
32}
33
34impl<T> fmt::Display for TryEnqueueError<T> {
35 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
36 let error = match self {
37 Self::InsufficientCapacity(_) => "queue has insufficient capacity",
38 Self::Closed(_) => "queue is closed",
39 };
40 write!(f, "{error}")
41 }
42}
43
44#[cfg(feature = "std")]
45impl<T> std::error::Error for TryEnqueueError<T> {}
46
47pub type EnqueueError<T> = TryEnqueueError<T>;
49
50#[derive(Debug, Copy, Clone, Eq, PartialEq)]
52pub enum TryDequeueError {
53 Empty,
55 Pending,
57 Closed,
59 Conflict,
61}
62
63impl fmt::Display for TryDequeueError {
64 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
65 let error = match self {
66 Self::Empty => "queue is empty",
67 Self::Pending => "waiting for concurrent enqueuing end",
68 Self::Closed => "queue is closed",
69 Self::Conflict => "queue is concurrently dequeued",
70 };
71 write!(f, "{error}")
72 }
73}
74
75#[cfg(feature = "std")]
76impl std::error::Error for TryDequeueError {}
77
78#[derive(Debug, Copy, Clone, Eq, PartialEq)]
81pub enum DequeueError {
82 Closed,
84 Conflict,
86}
87
88impl fmt::Display for DequeueError {
89 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
90 let error = match self {
91 Self::Closed => "queue is closed",
92 Self::Conflict => "queue is concurrently dequeued",
93 };
94 write!(f, "{error}")
95 }
96}
97
98#[cfg(feature = "std")]
99impl std::error::Error for DequeueError {}