ai_agents/traits.rs
1use crate::{error::Error, ModuleParam};
2
3pub trait Adapter: Send + Sync {
4 fn adapt(&self, input: ModuleParam) -> ModuleParam;
5}
6
7impl<F: Fn(ModuleParam) -> ModuleParam + Send + Sync + 'static> Adapter for F {
8 fn adapt(&self, input: ModuleParam) -> ModuleParam {
9 self(input)
10 }
11}
12
13#[async_trait::async_trait]
14pub trait UnitProcess: Send + Sync {
15 fn get_name(&self) -> &str;
16 async fn process(&self, input: ModuleParam) -> Result<ModuleParam, Error>;
17}