Skip to main content

Grid

Struct Grid 

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

Dense row-major rectangular map: walkability, traversal_cost, optional reachability.

Shared substrate for online crate::Pathfinder algorithms (4-connected). Open cells default to unit cost; blocked cells are excluded from neighbors. Cached reachability::GridReachabilityIndex is optional and cleared on walkability edits.

Implementations§

Source§

impl Grid

Source

pub fn new(width: usize, height: usize) -> Result<Grid, GridBuildError>

Creates a grid with non-zero dimensions.

§Errors

Returns GridBuildError when either dimension is zero, the cell count overflows, or backing storage cannot be reserved.

Source

pub const fn builder(width: usize, height: usize) -> GridBuilder

Starts a builder for a grid with the supplied dimensions.

Source

pub fn try_from_rows<I, S>(rows: I) -> Result<Grid, GridBuildError>
where I: IntoIterator<Item = S>, S: AsRef<str>,

Parses a rectangular grid from textual rows.

. creates an open cell with cost 1, # creates a blocked cell, and 1 through 9 create open cells with the corresponding traversal cost.

§Errors

Returns GridBuildError for empty, zero-width, ragged, or invalid input, or when the resulting grid cannot be allocated.

Source

pub fn index_reachability(&mut self)

Builds or rebuilds the cached reachability index from the current cells.

Source

pub fn is_reachable(&self, start: Point, goal: Point) -> bool

Returns whether start and goal share a walkable 4-way component.

Without a prior Self::index_reachability call, always returns true so search is not short-circuited.

Source

pub const fn width(&self) -> usize

Column count (cells along x).

Source

pub const fn height(&self) -> usize

Row count (cells along y).

Source

pub fn cell_count(&self) -> usize

Total cells (width * height).

Source

pub fn contains(&self, point: Point) -> bool

Whether point lies inside the grid bounds (walkability is separate).

Source

pub fn cell(&self, point: Point) -> Option<Cell>

Cell state at point, or None when out of bounds.

Source

pub fn set_cell( &mut self, point: Point, cell: Cell, ) -> Result<(), GridEditError>

Sets walkability; clears the cached reachability index when the value changes.

Blocking an open cell hides its traversal cost from queries but retains the stored cost so reopening restores it.

§Errors

Returns GridEditError::OutOfBounds if point is outside the grid.

Source

pub fn is_walkable(&self, point: Point) -> bool

In-bounds and Cell::Open; out-of-bounds and blocked cells are not walkable.

Source

pub fn path_is_walkable(&self, points: &[Point]) -> bool

Checks that every point is open and every consecutive pair is an orthogonal unit step.

Source

pub fn segment_is_walkable(&self, start: Point, end: Point) -> bool

Returns whether start and end form a single orthogonal unit edge between open cells.

Source

pub fn traversal_cost(&self, point: Point) -> Option<usize>

Returns the traversal cost for an open cell, or None if blocked or out of bounds.

Source

pub fn set_traversal_cost( &mut self, point: Point, cost: usize, ) -> Result<(), GridEditError>

Sets a positive traversal cost for a walkable cell.

§Errors

Returns GridEditError if the cost is zero, the point is outside the grid, or the cell is blocked.

Source

pub fn neighbors4(&self, point: Point) -> Vec<Point>

Walkable 4-connected neighbors of point, in fixed axis order.

Trait Implementations§

Source§

impl Clone for Grid

Source§

fn clone(&self) -> Grid

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Grid

Source§

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

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

impl Eq for Grid

Source§

impl PartialEq for Grid

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Grid

Auto Trait Implementations§

§

impl Freeze for Grid

§

impl RefUnwindSafe for Grid

§

impl Send for Grid

§

impl Sync for Grid

§

impl Unpin for Grid

§

impl UnsafeUnpin for Grid

§

impl UnwindSafe for Grid

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

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

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<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

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