use hamon::prelude::*;
pub struct Add {
pub val: i32,
}
impl Decorator<i32, i32> for Add {
fn produce(&mut self, previous: i32) -> i32 {
self.val + previous
}
}
struct ToStringDec;
impl Decorator<i32, String> for ToStringDec {
fn produce(&mut self, previous: i32) -> String {
format!("Value: {previous}")
}
}
fn main() {
let result = Builder::new(10)
.step(Add { val: 5 })
.step(|x| x * 2) .step(ToStringDec)
.build();
println!("Final Result: {}", result);
}