3 个版本 (稳定)
1.1.0 | 2020 年 12 月 6 日 |
---|---|
1.0.0 | 2020 年 12 月 5 日 |
0.1.0 | 2020 年 12 月 5 日 |
16 在 #subscribe 中
9KB
206 行
Blackboard
此软件包包含一个用于在 Rust 中使用黑板模式的类。
此模式由一个具有节区的黑板对象组成。程序可以获取节区的内容,在节区上放置内容,或订阅在节区更改时接收通知。
示例
use blackboard::BlackBoard;
fn main() {
let mut milk_acquired = 0;
let mut found_betsie = false;
{ //Must have this block because rust and lifetimes
let mut barn_blackboard = BlackBoard::new();
barn_blackboard.subscribe("Cows", |_| { milk_acquired += 1 });
barn_blackboard.subscribe("Chickens",
|c| {
if *c == "Betsie" { found_betsie = true; }
}
);
barn_blackboard.post("Cows", "Anna");
barn_blackboard.post("Cows", "Clara");
barn_blackboard.post("Chickens", "Gregory");
barn_blackboard.post("Sheep", "Daisy");
barn_blackboard.post("Sheep", "Rosie");
barn_blackboard.post("Cows", "Sugar");
barn_blackboard.post("Chickens", "Betsie");
barn_blackboard.post("Cows", "Anna");
}
assert_eq!(4, milk_acquired);
assert!(found_betsie);
}