2 个版本
0.7.0 |
|
---|---|
0.1.1 | 2022年2月25日 |
0.1.0 | 2022年2月25日 |
#1761 在 算法
19KB
299 行
sequencer
创建要执行的项目依赖图的途径。
数据和执行模型
这个包允许你创建一个有向无环图(DAG),并跟踪哪些项目目前是“活动”的。一旦一个项目被标记为完成,任何该项目的所有父节点都已完成的子节点将被标记为活动。
预期用途
这个包是为游戏中的事件排序/脚本而制作的,尽管它可以用于任何可以建模为依赖图的任何东西。
Cargo
将以下内容添加到 Cargo.toml 中
sequencer = "0.1"
示例
一个简单的线性序列,例如等待 5 个滴答,然后打印某物,可以表示为
enum Actions {
Wait(usize)
Print(String)
}
impl Actions {
fn tick(&mut self) -> bool {
match self {
...
}
}
}
fn main() {
let mut sequencer = Sequencer::default();
sequencer.new_seq(vec![Wait(5usize), Print("Done waiting".to_string())]);
while sequencer.is_active() {
// Activate next nodes ready for processing
sequencer.drain_queue(|_key, action| {});
// Process active nodes. Returning true means the node was finishes.
sequencer.for_each_active(|_key, item| item.tick());
}
}
查看示例目录以获取完整示例。
要添加的功能
- 创建图时更直观的方法,特别是具有并行执行的方法
- 可选的 serde 支持
- 图的视觉调试
- 图的视觉编辑
- 垃圾回收已完成节点的功能
依赖
~370KB