use crate::node::Node;
#[cfg(feature = "alloc")]
use alloc::boxed::Box;
#[cfg(feature = "std")]
use std::boxed::Box;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ExecutorState {
Stopped,
Started,
Running,
}
pub trait Executor<ID: PartialEq> {
type Context;
fn start(&mut self);
fn update_for_ms(&mut self, ms: u128);
fn update_loop(&mut self);
fn check_interrupt(&mut self) -> bool;
fn add_node(&mut self, node: Box<dyn Node<ID>>);
fn add_node_with_context(&mut self, node: Box<dyn Node<ID>>, _ctx: Self::Context) {
self.add_node(node);
}
fn remove_node(&mut self, id: &ID) -> Option<Box<dyn Node<ID>>>;
}