Struct block_grid::BlockGrid [−][src]
pub struct BlockGrid<T, B: BlockDim> { /* fields omitted */ }
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
impl<T, B: BlockDim> BlockGrid<T, B>[src]
impl<T, B: BlockDim> BlockGrid<T, B>[src]pub fn from_raw_vec(rows: usize, cols: usize, elems: Vec<T>) -> Result<Self, ()>[src]
pub fn from_raw_vec(rows: usize, cols: usize, elems: Vec<T>) -> Result<Self, ()>[src]pub fn take_raw_vec(self) -> Vec<T>[src]
pub fn take_raw_vec(self) -> Vec<T>[src]Converts a BlockGrid<T, B> to a Vec<T> in memory order.
pub fn row_blocks(&self) -> usize[src]
pub fn row_blocks(&self) -> usize[src]Returns the number of blocks in the vertical direction.
pub fn col_blocks(&self) -> usize[src]
pub fn col_blocks(&self) -> usize[src]Returns the number of blocks in the horizontal direction.
pub fn contains(&self, (row, col): Coords) -> bool[src]
pub fn contains(&self, (row, col): Coords) -> bool[src]Returns true if the given coordinates are valid.
pub fn get(&self, coords: Coords) -> Option<&T>[src]
pub fn get(&self, coords: Coords) -> Option<&T>[src]Returns a reference to the element at the given coordinates, or None if they are
out-of-bounds.
pub fn get_mut(&mut self, coords: Coords) -> Option<&mut T>[src]
pub fn get_mut(&mut self, coords: Coords) -> Option<&mut T>[src]Returns a mutable reference to the element at the given coordinates, or None if they
are out-of-bounds.
pub unsafe fn get_unchecked(&self, coords: Coords) -> &T[src]
pub unsafe fn get_unchecked(&self, coords: Coords) -> &T[src]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.
pub unsafe fn get_unchecked_mut(&mut self, coords: Coords) -> &mut T[src]
pub unsafe fn get_unchecked_mut(&mut self, coords: Coords) -> &mut T[src]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.
pub fn each_iter(&self) -> EachIter<'_, T, B>ⓘ[src]
pub fn each_iter(&self) -> EachIter<'_, T, B>ⓘ[src]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;[src]
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;[src]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.
pub fn block_iter(&self) -> BlockIter<'_, T, B>ⓘ[src]
pub fn block_iter(&self) -> BlockIter<'_, T, B>ⓘ[src]Returns an iterator over all blocks in memory order, yielding Blocks.
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>;[src]
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>;[src]Returns a mutable iterator over all blocks in memory order, yielding BlockMuts.
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;[src]
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;[src]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;[src]
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;[src]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.
impl<T: Clone, B: BlockDim> BlockGrid<T, B>[src]
impl<T: Clone, B: BlockDim> BlockGrid<T, B>[src]pub fn filled(rows: usize, cols: usize, elem: T) -> Result<Self, ()>[src]
pub fn filled(rows: usize, cols: usize, elem: T) -> Result<Self, ()>[src]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.
pub fn from_row_major(rows: usize, cols: usize, elems: &[T]) -> Result<Self, ()>[src]
pub fn from_row_major(rows: usize, cols: usize, elems: &[T]) -> Result<Self, ()>[src]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.
pub fn from_col_major(rows: usize, cols: usize, elems: &[T]) -> Result<Self, ()>[src]
pub fn from_col_major(rows: usize, cols: usize, elems: &[T]) -> Result<Self, ()>[src]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
impl<T: Eq, B: Eq + BlockDim> Eq for BlockGrid<T, B>[src]
impl<T, B: BlockDim> StructuralEq for BlockGrid<T, B>[src]
impl<T, B: BlockDim> StructuralPartialEq for BlockGrid<T, B>[src]
Auto Trait Implementations
impl<T, B> Send for BlockGrid<T, B> where
B: Send,
T: Send,
B: Send,
T: Send,
impl<T, B> Sync for BlockGrid<T, B> where
B: Sync,
T: Sync,
B: Sync,
T: Sync,
impl<T, B> Unpin for BlockGrid<T, B> where
B: Unpin,
T: Unpin,
B: Unpin,
T: Unpin,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more