Skip to main content

LayeredScratch

Struct LayeredScratch 

Source
pub struct LayeredScratch { /* private fields */ }
Expand description

Advance every pedestrian in peds by dt using planar_step as the per-floor physics and space for walls and connectors.

Semantics:

  1. Pedestrians currently riding a connector have their remaining time decremented; when it reaches zero they are teleported to the connector’s to_floor at to_pos and grounded.
  2. Grounded pedestrians are grouped by floor. For each floor the provided planar step function is called with that floor’s walls.
  3. After planar motion, each grounded pedestrian is checked against the floor’s connectors; if its 2-D position lands inside a connector’s boarding zone and its target is on the connector’s destination floor, it boards (a new ActiveTransition begins).

Boarding is only triggered for pedestrians whose target destination (z-planar) is on a different floor; the selection of which connector to take is the responsibility of the rustsim-mobility crate, which would instead set the pedestrian’s destination to the connector’s from_pos directly. Reusable scratch buffers for step_layered_scratch.

step_layered is convenient but allocates four Vecs per tick (floors, idxs, buf, walls). For a 30–60 Hz station sim with multiple floors this is measurable allocator traffic. Allocate one LayeredScratch per simulation, pass it to step_layered_scratch every tick, and the heap is untouched on the steady state.

The individual fields are pub(crate) so the wrapper can reuse them; external callers should treat the type as opaque.

Implementations§

Source§

impl LayeredScratch

Source

pub fn new() -> Self

Create an empty scratch with the default capacities.

Source

pub fn with_capacity(n_peds: usize) -> Self

Create a scratch pre-sized for n_peds pedestrians. Vecs are only reserved, not populated.

Trait Implementations§

Source§

impl Debug for LayeredScratch

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for LayeredScratch

Source§

fn default() -> LayeredScratch

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more