§libpetri-core — Core Types for Coloured Time Petri Nets
This crate defines the structural model: places, tokens, transitions, arcs,
and timing constraints. It contains no execution logic — see
libpetri-runtime for that.
use libpetri_core::place::Place;
use libpetri_core::token::Token;
use libpetri_core::transition::Transition;
use libpetri_core::petri_net::PetriNet;
use libpetri_core::input::one;
use libpetri_core::output::out_place;
use libpetri_core::action::fork;
use libpetri_core::timing::delayed;
let inbox = Place::<String>::new("inbox");
let outbox = Place::<String>::new("outbox");
let send = Transition::builder("send")
.input(one(&inbox))
.output(out_place(&outbox))
.timing(delayed(100))
.action(fork())
.build();
let net = PetriNet::builder("mailer")
.transition(send)
.build();
assert_eq!(net.transitions().len(), 1);