conflagrate 0.0.3

A framework for building applications from control flow graphs
Documentation
🔥 Conflagrate
==============

Build applications from control flow graphs, rather than the other way around.

1. Define your application flow with a [Graphviz]https://www.graphviz.org/ diagram
2. Write the code for each node as a function
3. Run

Conflagrate is a framework for building applications structured as the 
control flow graphs they end up becoming anyway.

Build the pieces of your application as self-contained nodes.  Arrange and
rearrange control flow logic as your needs mature and change without having to
go back and rewrite the glue code connecting your components.

🔨 Build the Graph
------------------
Define your application control flow with a graph.
```dot
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
    }

}
```

💻 Implement the Nodes
----------------------
Write a function for each type of node in your application.
```rust
use conflagrate::nodetype;

#[nodetype]

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

#[nodetype]

async fn HandleMessage(message: String, logger: &Logger) {
    logger.log(message);
}
```

🚀 Run
------
Run the application.
```rust
fn main() {
    MessageHandlerGraph::run(());
}
```