peace 0.0.15

zero stress automation
Documentation
# Item Graph

An item graph is a [function graph], whose logic type is an [item].

Instead of storing a single function in each node of the graph, each logic type is a collection of well-defined functions adhering to the [`Item`][`Item`] trait. <!-- Items that build upon other items are ordered through graph dependencies. -->

Combining these concepts contributes to the [strategy]'s outcomes, by enabling the framework to address common issues in each input dimension.

<div style="display: inline-block; padding: 0px 20px 0px 0px;">

```dot process
digraph {
    graph [
        penwidth  = 0
        nodesep   = 0.25
        ranksep   = 0.3
        bgcolor   = "transparent"
        fontcolor = "#555555"
        splines   = line
    ]
    node [
        fontcolor = "#111111"
        fontname  = "monospace"
        fontsize  = 10
        shape     = "circle"
        style     = "filled"
        width     = 0.4
        height    = 0.4
        margin    = 0.04
        color     = "#aaaabb"
        fillcolor = "#eeeef5"
    ]
    edge [
        arrowsize = 0.7
        color     = "#555555"
        fontcolor = "#555555"
    ]

    fn1 [label = <<b>fn1</b>>]
    fn2 [label = <<b>fn2</b>>]
    fn3 [label = <<b>fn3</b>>]
    fn4 [label = <<b>fn4</b>>]

    fn1 -> fn3
    fn2 -> fn3
    fn2 -> fn4 [weight = 2]
    fn3 -> fn4 [style = "dashed", color = "#555555"]
}
```

</div>
<div style="display: inline-block; vertical-align: top;">

```rust ,ignore
let graph = {
    let mut graph_builder = ItemGraphBuilder::<XError>::new();
    let [id_1, id_2, id_3, id_4] = graph_builder.add_fns([
        Item1::new(param1).into(),
        Item2::new(/* .. */).into(),
        Item3::new().into(),
        Item4::new().into(),
    ]);
    graph_builder.add_logic_edges([
        (id_1, id_3),
        (id_2, id_3),
        (id_2, id_4),
    ])?;

    graph_builder.build()
};
```

</div>

The remainder of this section explains how using these concepts together allows sensible user facing commands to be created. Available [commands] are documented in the [reference].


[`Item`]: https://docs.rs/peace_cfg/latest/peace_cfg/trait.Item.html
[commands]: ../reference/commands.html
[function graph]: function_graph.html
[item]: item.html
[reference]: ../reference.html
[strategy]: ../background/strategy.html