pub trait QueueSet:
Copy
+ Clone
+ Eq
+ Hash
+ Debug
+ Send
+ Sync
+ 'static {
// Required methods
fn all() -> &'static [Self];
fn name(&self) -> &'static str;
fn config(&self) -> QueueConfig;
// Provided method
fn from_name(name: &str) -> Option<Self> { ... }
}Expand description
A closed set of queues, normally an enum with #[derive(Queues)] from the
macros crate; the hand-written equivalent is:
use queuey_core::{QueueConfig, QueueSet, RetryPolicy};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
enum AppQueues { Emails, Images }
impl QueueSet for AppQueues {
fn all() -> &'static [Self] { &[AppQueues::Emails, AppQueues::Images] }
fn name(&self) -> &'static str {
match self { AppQueues::Emails => "myapp.emails", AppQueues::Images => "myapp.img" }
}
fn config(&self) -> QueueConfig {
match self {
AppQueues::Emails => QueueConfig::new(self.name()).prefetch(10),
AppQueues::Images => QueueConfig::new(self.name()).retry(RetryPolicy::exponential(3)),
}
}
}
assert_eq!(AppQueues::from_name("myapp.img"), Some(AppQueues::Images));
assert_eq!(AppQueues::Emails.config().prefetch, 10);Required Methods§
Sourcefn config(&self) -> QueueConfig
fn config(&self) -> QueueConfig
Full configuration for this variant.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".