use simple_middleware::{Manager, Next};
#[tokio::main]
async fn main() {
let manager = Manager::last(middleware1).await;
manager.next(middleware2).await.next(middleware3).await;
let result = manager.send(2).await;
println!("result: {result}");
}
async fn middleware1(value: i32, _next: Next<i32, usize>) -> usize {
(value * 4) as usize
}
async fn middleware2(value: i32, next: Next<i32, usize>) -> usize {
next.call(value + 5).await
}
async fn middleware3(value: i32, next: Next<i32, usize>) -> usize {
next.call(value * 6).await
}