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