Skip to main content

celers_kombu/
queue_mode.rs

1//! Queue mode definitions.
2
3/// Queue mode
4///
5/// # Examples
6///
7/// ```
8/// use celers_kombu::QueueMode;
9///
10/// let fifo = QueueMode::Fifo;
11/// assert!(fifo.is_fifo());
12/// assert!(!fifo.is_priority());
13/// assert_eq!(fifo.to_string(), "FIFO");
14///
15/// let priority = QueueMode::Priority;
16/// assert!(priority.is_priority());
17/// assert!(!priority.is_fifo());
18/// assert_eq!(priority.to_string(), "Priority");
19/// ```
20#[derive(Debug, Clone, Copy, PartialEq, Eq)]
21pub enum QueueMode {
22    /// First-In-First-Out
23    Fifo,
24    /// Priority-based
25    Priority,
26}
27
28impl QueueMode {
29    /// Check if this is FIFO mode
30    pub fn is_fifo(&self) -> bool {
31        matches!(self, QueueMode::Fifo)
32    }
33
34    /// Check if this is Priority mode
35    pub fn is_priority(&self) -> bool {
36        matches!(self, QueueMode::Priority)
37    }
38}
39
40impl std::fmt::Display for QueueMode {
41    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42        match self {
43            QueueMode::Fifo => write!(f, "FIFO"),
44            QueueMode::Priority => write!(f, "Priority"),
45        }
46    }
47}