rustsim-traffic 0.0.1

Transport-domain semantics for rustsim: multimodal movement, controls, and routing metadata
Documentation
//! Traffic-flow semantics for `rustsim`.
//!
//! This crate provides link-level traffic-flow types (fundamental diagrams,
//! signal timing, turn/control semantics, link properties) that sit above
//! `rustsim-core` and `rustsim-spaces`, and can be used by multimodal
//! simulations without pushing traffic-specific concepts into the engine
//! core.
//!
//! Included concepts:
//!
//! - transport link/network semantics layered on top of
//!   [`rustsim_modes::TravelMode`] and [`rustsim_modes::AllowedModes`]
//! - [`TrafficControlType`] - signal/stop/yield/uncontrolled controls
//! - [`TurnType`] - directional turn semantics at intersections
//! - [`LinkClass`] - coarse transport link classification
//! - [`FundamentalDiagram`] and [`LinkProperties`] - transport link behavior
//! - [`TransportLinkOps`] - transport operations over generic `LinkSpace<LinkProperties>`
//! - [`policy`] - explicit queue and control policy contracts
//! - [`TransportLinkMetadata`] - minimal reusable link semantics
//! - [`TransitStopMetadata`] - minimal reusable transit stop semantics
//! - [`signal`] - signal phase timing engine
//! - [`pedestrian_links`] - Weidmann 1993 pedestrian FD and pedestrian link properties

pub mod pedestrian_links;
pub mod policy;
pub mod signal;
pub mod types;

pub use crate::policy::{
    ControlContext, ControlDecision, ControlPolicy, FifoGapPolicy, FixedControlPolicy, QueuePolicy,
    SpeedConstraint, SpeedDecision,
};

pub use crate::types::{
    FundamentalDiagram, LinkClass, LinkProperties, TrafficControlType, TransitStopMetadata,
    TransportLinkMetadata, TransportLinkOps, TransportLinkSpace, TurnType,
};

pub use crate::pedestrian_links::{
    weidmann_density_factor, weidmann_flow, weidmann_speed, PedestrianLinkClass,
    PedestrianLinkProperties, WEIDMANN_FREE_FLOW_SPEED, WEIDMANN_GAMMA, WEIDMANN_RHO_JAM,
};

pub use crate::signal::{SignalPhase, SignalTiming};

pub mod prelude {
    pub use crate::pedestrian_links::{
        weidmann_density_factor, weidmann_flow, weidmann_speed, PedestrianLinkClass,
        PedestrianLinkProperties, WEIDMANN_FREE_FLOW_SPEED, WEIDMANN_GAMMA, WEIDMANN_RHO_JAM,
    };
    pub use crate::policy::{
        ControlContext, ControlDecision, ControlPolicy, FifoGapPolicy, FixedControlPolicy,
        QueuePolicy, SpeedConstraint, SpeedDecision,
    };
    pub use crate::signal::{SignalPhase, SignalTiming};
    pub use crate::types::{
        FundamentalDiagram, LinkClass, LinkProperties, TrafficControlType, TransitStopMetadata,
        TransportLinkMetadata, TransportLinkOps, TransportLinkSpace, TurnType,
    };
}