effect_cell

Crates.ioeffect_cell
lib.rseffect_cell
version0.1.1
sourcesrc
created_at2023-05-19 01:52:45.384413
updated_at2023-05-26 21:56:18.87571
descriptionContainer that runs effects when updated
homepagehttps://github.com/fprasx/effect-cell
repositoryhttps://github.com/fprasx/effect-cell
max_upload_size
id868470
size28,492
Felix Prasanna (fprasx)

documentation

https://docs.rs/effect_cell

README

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.

Commit count: 5

cargo fmt