#pattern #design-pattern #section #class #post #subscribe

bin+lib blackboard

使用 Rust 实现的简单黑板设计模式

3 个版本 (稳定)

1.1.0 2020 年 12 月 6 日
1.0.0 2020 年 12 月 5 日
0.1.0 2020 年 12 月 5 日

16#subscribe

MIT 许可证

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);
}

无运行时依赖