rustsim_traffic/lib.rs
1//! Traffic-flow semantics for `rustsim`.
2//!
3//! This crate provides link-level traffic-flow types (fundamental diagrams,
4//! signal timing, turn/control semantics, link properties) that sit above
5//! `rustsim-core` and `rustsim-spaces`, and can be used by multimodal
6//! simulations without pushing traffic-specific concepts into the engine
7//! core.
8//!
9//! Included concepts:
10//!
11//! - transport link/network semantics layered on top of
12//! [`rustsim_modes::TravelMode`] and [`rustsim_modes::AllowedModes`]
13//! - [`TrafficControlType`] - signal/stop/yield/uncontrolled controls
14//! - [`TurnType`] - directional turn semantics at intersections
15//! - [`LinkClass`] - coarse transport link classification
16//! - [`FundamentalDiagram`] and [`LinkProperties`] - transport link behavior
17//! - [`TransportLinkOps`] - transport operations over generic `LinkSpace<LinkProperties>`
18//! - [`policy`] - explicit queue and control policy contracts
19//! - [`TransportLinkMetadata`] - minimal reusable link semantics
20//! - [`TransitStopMetadata`] - minimal reusable transit stop semantics
21//! - [`signal`] - signal phase timing engine
22//! - [`pedestrian_links`] - Weidmann 1993 pedestrian FD and pedestrian link properties
23
24pub mod pedestrian_links;
25pub mod policy;
26pub mod signal;
27pub mod types;
28
29pub use crate::policy::{
30 ControlContext, ControlDecision, ControlPolicy, FifoGapPolicy, FixedControlPolicy, QueuePolicy,
31 SpeedConstraint, SpeedDecision,
32};
33
34pub use crate::types::{
35 FundamentalDiagram, LinkClass, LinkProperties, TrafficControlType, TransitStopMetadata,
36 TransportLinkMetadata, TransportLinkOps, TransportLinkSpace, TurnType,
37};
38
39pub use crate::pedestrian_links::{
40 weidmann_density_factor, weidmann_flow, weidmann_speed, PedestrianLinkClass,
41 PedestrianLinkProperties, WEIDMANN_FREE_FLOW_SPEED, WEIDMANN_GAMMA, WEIDMANN_RHO_JAM,
42};
43
44pub use crate::signal::{SignalPhase, SignalTiming};
45
46pub mod prelude {
47 pub use crate::pedestrian_links::{
48 weidmann_density_factor, weidmann_flow, weidmann_speed, PedestrianLinkClass,
49 PedestrianLinkProperties, WEIDMANN_FREE_FLOW_SPEED, WEIDMANN_GAMMA, WEIDMANN_RHO_JAM,
50 };
51 pub use crate::policy::{
52 ControlContext, ControlDecision, ControlPolicy, FifoGapPolicy, FixedControlPolicy,
53 QueuePolicy, SpeedConstraint, SpeedDecision,
54 };
55 pub use crate::signal::{SignalPhase, SignalTiming};
56 pub use crate::types::{
57 FundamentalDiagram, LinkClass, LinkProperties, TrafficControlType, TransitStopMetadata,
58 TransportLinkMetadata, TransportLinkOps, TransportLinkSpace, TurnType,
59 };
60}