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}