use async_trait::async_trait;
use tokio_util::task::TaskTracker;
use tracing::info;
#[async_trait]
pub trait AsyncEngine: Send + Sync + 'static {
async fn run(&self);
}
pub fn start_engine(engine: Box<dyn AsyncEngine>, message: &str, tracker: &TaskTracker) {
info!(message);
tracker.spawn(async move {
engine.run().await;
});
}