Struct block_grid::BlockGrid [−][src]
pub struct BlockGrid<T, B: BlockDim> { /* fields omitted */ }
Expand description
A fixed-size 2D array with a blocked memory representation.
See crate-level documentation for general usage info.
If your dimensions are not a multiple of the block size, you can use the helper function
BlockDim::round_up_to_valid
to generate larger, valid dimensions.
Implementations
Converts a BlockGrid<T, B>
to a Vec<T>
in memory order.
Returns the number of blocks in the vertical direction.
Returns the number of blocks in the horizontal direction.
Returns true
if the given coordinates are valid.
Returns a reference to the element at the given coordinates, or None
if they are
out-of-bounds.
Returns a mutable reference to the element at the given coordinates, or None
if they
are out-of-bounds.
Returns a reference to the element at the given coordinates, without bounds checking.
Safety
Calling this method with out-of-bounds coordinates is undefined-behaviour.
Returns a mutable reference to the element at the given coordinates, without bounds checking.
Safety
Calling this method with out-of-bounds coordinates is undefined-behaviour.
Returns an iterator over all the elements in memory order.
If you wanna visit each element arbitrarily, this would be the best way. If you also need
coordinates while iterating, follow up with a chained .coords()
call.
pub fn each_iter_mut(&mut self) -> EachIterMut<'_, T, B>ⓘNotable traits for EachIterMut<'a, T, B>impl<'a, T, B: BlockDim> Iterator for EachIterMut<'a, T, B> type Item = &'a mut T;
pub fn each_iter_mut(&mut self) -> EachIterMut<'_, T, B>ⓘNotable traits for EachIterMut<'a, T, B>impl<'a, T, B: BlockDim> Iterator for EachIterMut<'a, T, B> type Item = &'a mut T;
impl<'a, T, B: BlockDim> Iterator for EachIterMut<'a, T, B> type Item = &'a mut T;
Returns a mutable iterator over all the elements in memory order.
If you wanna mutably visit each element arbitrarily, this would be the best way. If you
also need coordinates while iterating, follow up with a chained .coords()
call.
Returns an iterator over all blocks in memory order, yielding Block
s.
If you need the block coordinates while iterating, follow up with a chained
.coords()
call. In this case, note that the 2D coordinates yielded are of the
actual entire block. If you instead need the coordinates of the first (top-left) element
in the block, see Block::starts_at
.
pub fn block_iter_mut(&mut self) -> BlockIterMut<'_, T, B>ⓘNotable traits for BlockIterMut<'a, T, B>impl<'a, T, B: BlockDim> Iterator for BlockIterMut<'a, T, B> type Item = BlockMut<'a, T, B>;
pub fn block_iter_mut(&mut self) -> BlockIterMut<'_, T, B>ⓘNotable traits for BlockIterMut<'a, T, B>impl<'a, T, B: BlockDim> Iterator for BlockIterMut<'a, T, B> type Item = BlockMut<'a, T, B>;
impl<'a, T, B: BlockDim> Iterator for BlockIterMut<'a, T, B> type Item = BlockMut<'a, T, B>;
Returns a mutable iterator over all blocks in memory order, yielding BlockMut
s.
If you need the block coordinates while iterating, follow up with a chained
.coords()
call. In this case, note that the 2D coordinates yielded are of the
actual entire block. If you instead need the coordinates of the first (top-left) element
in the block, see BlockMut::starts_at
.
pub fn row_major_iter(&self) -> RowMajorIter<'_, T, B>ⓘNotable traits for RowMajorIter<'a, T, B>impl<'a, T, B: BlockDim> Iterator for RowMajorIter<'a, T, B> type Item = &'a T;
pub fn row_major_iter(&self) -> RowMajorIter<'_, T, B>ⓘNotable traits for RowMajorIter<'a, T, B>impl<'a, T, B: BlockDim> Iterator for RowMajorIter<'a, T, B> type Item = &'a T;
impl<'a, T, B: BlockDim> Iterator for RowMajorIter<'a, T, B> type Item = &'a T;
Returns an iterator over all the elements in row-major order.
This ordering is what you’re probably used to with usual 2D arrays. This method may be
useful for converting between array types or general IO. If you also need the coordinates
while iterating, follow up with a chained .coords()
call.
pub fn row_major_iter_mut(&mut self) -> RowMajorIterMut<'_, T, B>ⓘNotable traits for RowMajorIterMut<'a, T, B>impl<'a, T, B: BlockDim> Iterator for RowMajorIterMut<'a, T, B> type Item = &'a mut T;
pub fn row_major_iter_mut(&mut self) -> RowMajorIterMut<'_, T, B>ⓘNotable traits for RowMajorIterMut<'a, T, B>impl<'a, T, B: BlockDim> Iterator for RowMajorIterMut<'a, T, B> type Item = &'a mut T;
impl<'a, T, B: BlockDim> Iterator for RowMajorIterMut<'a, T, B> type Item = &'a mut T;
Returns an mutable iterator over all the elements in row-major order.
If you also need the coordinates while iterating, follow up with a chained
.coords()
call.
Constructs a BlockGrid<T, B>
by filling with a single element.
Errors
If rows
and cols
do not divide evenly into the block size B
.
Constructs a BlockGrid<T, B>
from a slice in row-major order.
This method may be useful for converting from a typical 2D array.
Errors
If invalid dimensions, either because rows
and cols
do not divide evenly into the block
size B
or the length of elems
does not match rows * cols
.
Constructs a BlockGrid<T, B>
from a slice in column-major order.
2D arrays are not usually stored like this, but occasionally they are.
Errors
If invalid dimensions, either because rows
and cols
do not divide evenly into the block
size B
or the length of elems
does not match rows * cols
.
Trait Implementations
Auto Trait Implementations
impl<T, B> RefUnwindSafe for BlockGrid<T, B> where
B: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, B> UnwindSafe for BlockGrid<T, B> where
B: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more