Skip to main content

acts_next/plugin/
mod.rs

1use crate::Engine;
2
3#[cfg(test)]
4mod tests;
5
6/// Act plugin trait
7///
8/// ## Example
9///
10/// ```rust,no_run
11/// use acts::{ActPlugin, Result, Engine, Workflow};
12/// #[derive(Clone)]
13/// struct TestPlugin;
14///
15/// impl TestPlugin {
16///     fn new() -> Self {
17///         Self
18///     }
19/// }
20///
21/// #[async_trait::async_trait]
22/// impl ActPlugin for TestPlugin {
23///     async fn on_init(&self, engine: &Engine) -> Result<()> {
24///         println!("TestPlugin");
25///         // engine.register_module("name", module);
26///         engine.channel().on_start(|e| {});
27///         engine.channel().on_complete(|e| {});
28///         engine.channel().on_message(|e| {});
29///         Ok(())
30///     }
31/// }
32/// ```
33#[async_trait::async_trait]
34pub trait ActPlugin: Send + Sync {
35    async fn on_init(&self, engine: &Engine) -> crate::Result<()>;
36}