2 releases
0.1.1 | May 26, 2023 |
---|---|
0.1.0 | May 19, 2023 |
#2244 in Rust patterns
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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.