use layered::prelude::*;
use layered::{Execute, Intercept};
#[tokio::main]
async fn main() {
let stack = (
Intercept::layer()
.on_input(|i| println!("on input: {i}"))
.on_output(|o| println!("on output: {o}")),
Execute::new(|input: String| async move {
println!("executing input: {input}");
input.to_uppercase()
}),
);
let service = stack.into_service();
let _output = service.execute("Hello, World!".to_string()).await;
}