use async_trait::async_trait;
use crate::{error, job::Job};
#[derive(Clone, Copy, Debug)]
pub enum QueueType {
FIFO, LIFO, }
impl Default for QueueType {
fn default() -> Self {
Self::FIFO
}
}
#[async_trait]
pub trait Queue: Send + Sync {
type JobType: Job;
async fn push(&self, job: Self::JobType) -> Result<(), error::QueueWorkerError>;
async fn pop(&self) -> Result<Self::JobType, error::QueueWorkerError>;
}