1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use std::error::Error;
use crate::Queue;
/// Represents an executable background job.
#[typetag::serde]
pub trait Executable {
fn execute(&self) -> Result<(), Box<dyn Error>>;
}
pub trait ExecutableExt {
fn enqueue_into(self, queue: &mut Queue, name: &str) -> crate::Result<()>;
}
impl<T: Executable + 'static> ExecutableExt for T {
fn enqueue_into(self, queue: &mut Queue, name: &str) -> crate::Result<()> {
queue.enqueue(name, Box::new(self))
}
}