use crate::role::context::job::JobContext;
use crate::role::result::job::JobResult;
use std::future::Future;
pub trait JobRole: Send + 'static {
fn init<'a>(
&'a mut self,
ctx: &'a JobContext,
) -> impl Future<Output = JobResult<()>> + Send + 'a {
async move {
let _ = ctx;
Ok(())
}
}
fn run<'a>(
&'a mut self,
ctx: &'a JobContext,
) -> impl Future<Output = JobResult<()>> + Send + 'a;
fn complete<'a>(
&'a mut self,
ctx: &'a JobContext,
) -> impl Future<Output = JobResult<()>> + Send + 'a {
async move {
let _ = ctx;
Ok(())
}
}
}