ptnet-elementary 0.1.2

Implementation of ptnet-core for Elementary nets (EN).
Documentation
use ptnet_core::{
    fmt::{print_net, NetMatrixFormatter},
    net::{NetBuilder, PlaceBuilder, TransitionBuilder},
};
use ptnet_elementary::ElementaryNetBuilder;

#[test]
fn test_simple_net_builder() {
    let mut builder = ElementaryNetBuilder::default();

    builder
        .place()
        .with_label("start")
        .to_transition()
        .to_place()
        .to_transition()
        .to_place()
        .with_label("end");

    let net = builder.build();

    let mut f = NetMatrixFormatter::default();
    print_net(&net, &mut f).unwrap();
}

#[test]
fn test_producer_consumer() {
    let mut builder = ElementaryNetBuilder::default();

    builder
        .place()
        .remember_as("p1")
        .to_transition()
        .with_label("fill")
        .remember_as("fill")
        .to_place()
        .remember_as("p2")
        .to_transition()
        .with_label("produce")
        .to_remembered("p1");

    builder
        .recall_transition("fill")
        .to_place()
        .with_label("b/full")
        .to_transition()
        .with_label("empty")
        .remember_as("empty")
        .to_place()
        .to_transition()
        .with_label("consume")
        .to_place()
        .remember_as("c1");

    builder.arc(
        builder.recall("c1").unwrap(),
        builder.recall("empty").unwrap(),
    );

    let net = builder.build();
    let mut f = NetMatrixFormatter::default();
    print_net(&net, &mut f).unwrap();
}