#![allow(dead_code, clippy::new_ret_no_self)]
use id_effect::{Effect, caps, effect, provide, run_with};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Counter(pub u32);
#[derive(::id_effect::ProviderSpecDerive)]
#[provides(Counter)]
struct CounterLive;
impl CounterLive {
fn new() -> Counter {
Counter(42)
}
}
fn app() -> Effect<u32, (), caps!(Counter)> {
effect!(|r| {
let counter = ~Counter;
counter.0
})
}
fn main() {
let n = run_with([provide!(CounterLive)], app()).expect("run");
assert_eq!(n, 42);
println!("counter = {n}");
}