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