Skip to main content

beetry_core/task/
execution.rs

1use anyhow::Result;
2#[cfg(test)]
3use mockall::automock;
4
5use crate::{TaskStatus, task::ActionTask};
6
7pub trait ExecutorConcept {
8    fn run(&mut self) -> impl Future<Output = Result<()>>;
9}
10
11#[cfg_attr(test, automock)]
12pub trait RegisterTask<TH>
13where
14    TH: TaskHandle,
15{
16    fn register(&self, task: ActionTask) -> Result<TH>;
17}
18
19pub trait TaskHandle: QueryTask + AbortTask {}
20impl<T: QueryTask + AbortTask> TaskHandle for T {}
21
22#[cfg_attr(test, automock)]
23pub trait QueryTask {
24    fn query(&mut self) -> TaskStatus;
25}
26
27#[cfg_attr(test, automock)]
28pub trait AbortTask {
29    fn abort(&mut self);
30}