2 releases

0.1.1 May 26, 2023
0.1.0 May 19, 2023

#2253 in Rust patterns

MIT/Apache

16KB
260 lines

EffectCell

A container that runs an effect every time its data is mutated. In essence, a slimed down implementation of the Observer pattern using Rust's Fn trait.

use effect_cell::EffectCell;

fn main() {
    let mut effect_cell = EffectCell::new(0);
    effect_cell.bind(|data| {println!("{data}");});
    effect_cell.update(1);
    // Prints "1"
}

Operator Passthrough

The XAssign traits have been setup so that they can modify the internal data without the need for a call through update_lambda. They will always call effects.

use effect_cell::EffectCell;

fn main() {
    let mut effect_cell = EffectCell::new(0);
    effect_cell.bind(|data| {println!("{data}");});
    effect_cell += 1;
    // Prints "1"
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps