4 个版本

0.1.0 2022 年 4 月 26 日
0.0.3 2022 年 4 月 17 日
0.0.2 2022 年 4 月 8 日
0.0.1 2022 年 4 月 8 日

#58 in #control-flow

27 每月下载次数
用于 conflagrate

MIT 许可协议

59KB
1K SLoC

🔥 Conflagrate

从控制流图构建应用程序,而不是相反。

  1. 使用 Graphviz 图形定义你的应用程序流程
  2. 编写每个节点的代码作为函数
  3. 运行

Conflagrate 是一个用于构建最终以控制流图结构化的应用程序的框架。

将应用程序的各个部分构建为独立的节点。随着需求的发展和变化,安排和重新安排控制流逻辑,无需回过头来重写连接组件的粘合代码。

🔨 构建 图

使用图定义你的应用程序控制流。

conflagrate::graph!{

    digraph MessageHandlerGraph {
        listen[label="Listen on a Socket for a Message", type=Listen, start=true];
        handle_message[label="Handle the Message", type=HandleMessage];

        listen -> handle_message;  // Handle the message
        listen -> listen;  // Listen for the next message
    }

}

💻 实现 节点

为应用程序中的每种类型的节点编写一个函数。

use conflagrate::nodetype;

#[nodetype]
async fn Listen(interface: &SocketInterface) -> String {
    interface.receive().await
}

#[nodetype]
async fn HandleMessage(message: String, logger: &Logger) {
    logger.log(message);
}

🚀 运行

运行应用程序。

fn main() {
    MessageHandlerGraph::run(());
}

依赖项

~5–14MB
~187K SLoC