pub struct DispatchManifest { /* private fields */ }Expand description
Full demand picture for dispatch decisions.
Contains per-rider metadata grouped by stop, enabling entity-aware dispatch strategies (priority, weight-aware, VIP-first, etc.).
Uses BTreeMap for deterministic iteration order.
Implementations§
Source§impl DispatchManifest
impl DispatchManifest
Sourcepub fn waiting_count_at(&self, stop: EntityId) -> usize
pub fn waiting_count_at(&self, stop: EntityId) -> usize
Number of riders waiting at a stop.
Sourcepub fn total_weight_at(&self, stop: EntityId) -> f64
pub fn total_weight_at(&self, stop: EntityId) -> f64
Total weight of riders waiting at a stop.
Sourcepub fn riding_count_to(&self, stop: EntityId) -> usize
pub fn riding_count_to(&self, stop: EntityId) -> usize
Number of riders heading to a stop (aboard elevators).
Sourcepub fn has_demand(&self, stop: EntityId) -> bool
pub fn has_demand(&self, stop: EntityId) -> bool
Whether a stop has any demand for this group: waiting riders,
riders heading there, or a rider-less hall call (one that
press_hall_button placed without a backing rider). Pre-fix
the rider-less case was invisible to every built-in dispatcher,
so explicit button presses with no associated rider went
unanswered indefinitely (#255).
Hall calls with pending_riders are not double-counted —
those riders already appear in waiting_count_at for the
groups whose dispatch surface they belong to. Adding the call
to has_demand for every group that serves the stop would
pull cars from groups the rider doesn’t even want, causing
open/close oscillation regression that the multi-group test
dispatch_ignores_waiting_rider_targeting_another_group pins.
Sourcepub fn resident_count_at(&self, stop: EntityId) -> usize
pub fn resident_count_at(&self, stop: EntityId) -> usize
Number of residents at a stop (read-only hint, not active demand).
Sourcepub fn arrivals_at(&self, stop: EntityId) -> u64
pub fn arrivals_at(&self, stop: EntityId) -> u64
Rider arrivals at stop within the last
arrival_window_ticks ticks. The
signal is the rolling-window per-stop arrival rate that
commercial controllers use to pick a traffic mode and that
crate::dispatch::reposition::PredictiveParking uses to
forecast demand. Unvisited stops return 0.
Sourcepub const fn arrival_window_ticks(&self) -> u64
pub const fn arrival_window_ticks(&self) -> u64
Window size (in ticks) over which arrivals_at
counts events. Strategies convert counts to rates by dividing
by this.
Sourcepub fn hall_call_at(
&self,
stop: EntityId,
direction: CallDirection,
) -> Option<&HallCall>
pub fn hall_call_at( &self, stop: EntityId, direction: CallDirection, ) -> Option<&HallCall>
The hall call at (stop, direction), if pressed.
Sourcepub fn iter_hall_calls(&self) -> impl Iterator<Item = &HallCall>
pub fn iter_hall_calls(&self) -> impl Iterator<Item = &HallCall>
All hall calls across every stop in the group (flattened iterator).
No #[must_use] needed: impl Iterator already carries that
annotation, and adding our own triggers clippy’s
double_must_use lint.
Sourcepub fn car_calls_for(&self, car: EntityId) -> &[CarCall]
pub fn car_calls_for(&self, car: EntityId) -> &[CarCall]
Floor buttons currently pressed inside car. Empty slice if the
car has no aboard riders or no outstanding presses.
Sourcepub fn waiting_riders_at(&self, stop: EntityId) -> &[RiderInfo]
pub fn waiting_riders_at(&self, stop: EntityId) -> &[RiderInfo]
Riders waiting at a specific stop.
Sourcepub fn iter_waiting_stops(
&self,
) -> impl Iterator<Item = (&EntityId, &[RiderInfo])>
pub fn iter_waiting_stops( &self, ) -> impl Iterator<Item = (&EntityId, &[RiderInfo])>
Iterate over all (stop, riders) pairs with waiting demand.
Sourcepub fn riding_riders_to(&self, stop: EntityId) -> &[RiderInfo]
pub fn riding_riders_to(&self, stop: EntityId) -> &[RiderInfo]
Riders currently riding toward a specific stop.
Sourcepub fn iter_riding_stops(
&self,
) -> impl Iterator<Item = (&EntityId, &[RiderInfo])>
pub fn iter_riding_stops( &self, ) -> impl Iterator<Item = (&EntityId, &[RiderInfo])>
Iterate over all (stop, riders) pairs with in-transit demand.
Sourcepub fn iter_hall_call_stops(
&self,
) -> impl Iterator<Item = (&EntityId, &[HallCall])>
pub fn iter_hall_call_stops( &self, ) -> impl Iterator<Item = (&EntityId, &[HallCall])>
Iterate over all (stop, hall_calls) pairs with active calls.
Trait Implementations§
Source§impl Clone for DispatchManifest
impl Clone for DispatchManifest
Source§fn clone(&self) -> DispatchManifest
fn clone(&self) -> DispatchManifest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more