eventide_application/bus_types.rs
1//! 命令总线和查询总线的公共类型定义
2
3use std::{any::Any, future::Future, pin::Pin, sync::Arc};
4
5use crate::{context::AppContext, error::AppError};
6
7/// 类型擦除的 Send 类型
8pub type BoxAnySend = Box<dyn Any + Send>;
9
10/// 处理器 Future 类型
11pub type HandlerFuture<'a> =
12 Pin<Box<dyn Future<Output = Result<BoxAnySend, AppError>> + Send + 'a>>;
13
14/// 处理器函数类型
15pub type HandlerFn =
16 Arc<dyn for<'a> Fn(BoxAnySend, &'a AppContext) -> HandlerFuture<'a> + Send + Sync>;