Skip to main content

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}