#control-flow #graph #dependency-injection #control-flow-graph

conflagrate

一个从控制流图中构建应用程序的框架

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日

#1061 in 开发工具

MIT 许可证

16KB
203

🔥 Conflagrate

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

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

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

将应用程序的各个部分作为独立的节点构建。随着您的需求成熟和变化,您可以根据需要安排和重新排列控制流逻辑,而无需重新编写连接组件的粘合代码。

🔨 构建 Graph

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

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
    }

}

💻 实现 Nodes

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

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

依赖项

~6–17MB
~219K SLoC