Struct map_model::Path

source ·
pub struct Path {
    steps: VecDeque<PathStep>,
    orig_req: PathRequest,
    total_length: Distance,
    crossed_so_far: Distance,
    uber_turns: VecDeque<UberTurn>,
    currently_inside_ut: Option<UberTurn>,
    blocked_starts: Vec<LaneID>,
}

Fields§

§steps: VecDeque<PathStep>§orig_req: PathRequest§total_length: Distance§crossed_so_far: Distance§uber_turns: VecDeque<UberTurn>§currently_inside_ut: Option<UberTurn>§blocked_starts: Vec<LaneID>

Implementations§

source§

impl Path

source

pub(crate) fn new( map: &Map, steps: Vec<PathStep>, orig_req: PathRequest, uber_turns: Vec<UberTurn>, blocked_starts: Vec<LaneID> ) -> Path

source

pub fn dist_crossed_from_step(&self, map: &Map, step: &PathStep) -> Distance

Once we finish this PathStep, how much distance will be crossed? If the step is at the beginning or end of our path, then the full length may not be used.

source

pub fn get_req(&self) -> &PathRequest

The original PathRequest used to produce this path. If the path has been modified since creation, the start and end of the request won’t match up with the current path steps.

source

pub fn crossed_so_far(&self) -> Distance

source

pub fn total_length(&self) -> Distance

source

pub fn percent_dist_crossed(&self) -> f64

source

pub fn is_empty(&self) -> bool

source

pub fn is_last_step(&self) -> bool

source

pub fn isnt_last_step(&self) -> bool

source

pub fn currently_inside_ut(&self) -> &Option<UberTurn>

source

pub fn about_to_start_ut(&self) -> Option<&UberTurn>

source

pub fn shift(&mut self, map: &Map) -> PathStep

source

pub fn add(&mut self, step: PathStep, map: &Map)

source

pub fn is_upcoming_uber_turn_component(&self, t: TurnID) -> bool

source

pub fn modify_step(&mut self, idx: usize, step: PathStep, map: &Map)

Trusting the caller to do this in valid ways.

source

pub fn current_step(&self) -> PathStep

source

pub fn next_step(&self) -> PathStep

source

pub fn maybe_next_step(&self) -> Option<PathStep>

source

pub fn last_step(&self) -> PathStep

source

pub fn trace(&self, map: &Map) -> Option<PolyLine>

Traces along the path from its originally requested start. This is only valid to call for an umodified path.

It mostly seems the PolyLine’s length will match total_length, but callers beware if you’re relying on this – check walking paths with the buggy sharp angles particularly.

source

pub fn trace_from_start( &self, map: &Map, start_dist: Distance ) -> Option<PolyLine>

Traces along the path from a specified distance along the first step until the end.

source

pub fn trace_v2(&self, map: &Map) -> Result<Polygon>

Draws the thickened path, matching entire roads. Ignores the path’s exact starting and ending distance.

source

pub fn get_steps(&self) -> &VecDeque<PathStep>

source

pub fn estimate_duration(&self, map: &Map, max_speed: Option<Speed>) -> Duration

Estimate how long following the path will take in the best case, assuming no traffic or delay at intersections. To determine the speed along each step, the agent’s optional max_speed must be known.

source

pub fn get_blocked_starts(&self) -> Vec<LaneID>

If the agent following this path will initially block some intermediate lanes as they move between a driveway and get_req().start, then record them here.

source

pub fn get_total_elevation_change(&self, map: &Map) -> (Distance, Distance)

Returns the total elevation (gain, loss) experienced over the path.

source

pub fn get_step_at_dist_along( &self, map: &Map, dist_along: Distance ) -> Result<PathStep>

source

pub fn crosses_road(&self, r: RoadID) -> bool

Trait Implementations§

source§

impl Clone for Path

source§

fn clone(&self) -> Path

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Path

source§

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

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

impl<'de> Deserialize<'de> for Path

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl PartialEq for Path

source§

fn eq(&self, other: &Path) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Path

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Path

Auto Trait Implementations§

§

impl RefUnwindSafe for Path

§

impl Send for Path

§

impl Sync for Path

§

impl Unpin for Path

§

impl UnwindSafe for Path

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.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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>,

§

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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

§

fn is_within(&self, b: &G2) -> bool

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,