1
2
3
4
5
6
7
8
9
10
11
12
pub trait Action {
    type State<'s>;
    type Value;
    type Error;
}

pub trait Target<A>
where
    A: Action,
{
    fn update(&mut self, action: A, state: A::State<'_>) -> Result<A::Value, A::Error>;
}