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}