Struct map_model::Lane

source ·
pub struct Lane {
    pub id: LaneID,
    pub lane_type: LaneType,
    pub lane_center_pts: PolyLine,
    pub width: Distance,
    pub dir: Direction,
    pub src_i: IntersectionID,
    pub dst_i: IntersectionID,
    pub driving_blackhole: bool,
    pub biking_blackhole: bool,
}
Expand description

A road segment is broken down into individual lanes, which have a LaneType.

Fields§

§id: LaneID§lane_type: LaneType§lane_center_pts: PolyLine§width: Distance§dir: Direction§src_i: IntersectionID§dst_i: IntersectionID§driving_blackhole: bool

{Cars, bikes} trying to start or end here might not be able to reach most lanes in the graph, because this is near a border.

§biking_blackhole: bool

Implementations§

source§

impl Lane

source

pub fn first_pt(&self) -> Pt2D

source

pub fn last_pt(&self) -> Pt2D

source

pub fn first_line(&self) -> Line

source

pub fn last_line(&self) -> Line

source

pub fn endpoint(&self, i: IntersectionID) -> Pt2D

source

pub fn end_line(&self, i: IntersectionID) -> Line

pt2 will be endpoint

source

pub fn dist_along_of_point(&self, pt: Pt2D) -> Option<Distance>

source

pub fn length(&self) -> Distance

source

pub fn intersections(&self) -> Vec<IntersectionID>

source

pub fn number_parking_spots(&self, cfg: &MapConfig) -> usize

source

pub fn is_driving(&self) -> bool

source

pub fn is_biking(&self) -> bool

source

pub fn is_bus(&self) -> bool

source

pub fn is_walkable(&self) -> bool

source

pub fn is_sidewalk(&self) -> bool

source

pub fn is_shoulder(&self) -> bool

source

pub fn is_parking(&self) -> bool

source

pub fn is_light_rail(&self) -> bool

source

pub fn is_footway(&self) -> bool

source

pub fn get_directed_parent(&self) -> DirectedRoadID

source

pub fn get_nearest_side_of_road(&self, map: &Map) -> RoadSideID

This does the reasonable thing for the leftmost and rightmost lane on a road – except for roads with exactly one lane. For lanes in the middle of a road, it uses the direction of the lane – so bidirectional/contraflow cycletracks will produce weird results.

source

pub fn get_lane_level_turn_restrictions( &self, road: &Road, force_bus: bool ) -> Option<BTreeSet<TurnType>>

Returns the set of allowed turn types, based on individual turn lane restrictions. None means all turn types are allowed.

This will return None for bus lanes, unless force_bus is true. OSM turn restrictions on bus lanes usually apply to regular vehicles, not the buses. When generating the turns for buses, we probably don’t want to use the restrictions.

source

pub fn common_endpoint(&self, other: &Lane) -> CommonEndpoint

source

pub fn get_thick_polygon(&self) -> Polygon

Trait Implementations§

source§

impl Clone for Lane

source§

fn clone(&self) -> Lane

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 Lane

source§

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

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

impl<'de> Deserialize<'de> for Lane

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 Serialize for Lane

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

Auto Trait Implementations§

§

impl RefUnwindSafe for Lane

§

impl Send for Lane

§

impl Sync for Lane

§

impl Unpin for Lane

§

impl UnwindSafe for Lane

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