pub struct Grid<T> { /* private fields */ }
Expand description
Collection that holds data in 2d grid-like manner. Grid can be:
- accessed by inspection of each element;
- filled with same value for all fields;
- filled with values got from closure that produces value for each field individually;
- sampled with any type that implements
GridSampler
trai.
Implementations§
Source§impl<T> Grid<T>
impl<T> Grid<T>
Sourcepub fn new(cols: usize, rows: usize, value: T) -> Selfwhere
T: Clone,
pub fn new(cols: usize, rows: usize, value: T) -> Selfwhere
T: Clone,
Creates new grid.
§Arguments
cols
- Number of columns.rows
- Number of rows.value
- Initial value applied for each field.
§Return
Instance of grid.
§Example
use psyche_utils::grid::{Grid, GridSamplerCluster};
let grid = Grid::new(2, 2, 1.0);
let sampler = GridSamplerCluster::new((0, 0), (1, 1));
assert_eq!(grid.sample(sampler).unwrap(), (4.0, 4));
Sourcepub fn fields_mut(&mut self) -> &mut [T]
pub fn fields_mut(&mut self) -> &mut [T]
Sourcepub fn fill(&mut self, col_row: (usize, usize), size: (usize, usize), value: T)where
T: Clone,
pub fn fill(&mut self, col_row: (usize, usize), size: (usize, usize), value: T)where
T: Clone,
Fiils grid with same value to fields contained by specified bounds.
§Arguments
col_row
- Starting column and row.size
- Number of columns and rows of bounds.value
- Value that will be applied to each field.
§Example
use psyche_utils::grid::Grid;
let mut grid = Grid::new(2, 2, 0.0);
grid.fill((1, 0), (1, 2), 1.0);
assert_eq!(grid.fields(), &[0.0, 1.0, 0.0, 1.0]);
Sourcepub fn fill_with<F>(&mut self, with: F)
pub fn fill_with<F>(&mut self, with: F)
Fiils grid with values got from producer closure.
§Arguments
with
- Closure that will produce value for each field based on their col-row coords.
§Example
use psyche_utils::grid::Grid;
let mut grid = Grid::new(2, 2, 0.0);
grid.fill_with(|col, row| Some((col + row) as f32));
assert_eq!(grid.fields(), &[0.0, 1.0, 1.0, 2.0]);
Sourcepub fn sample<S, W>(&self, sampler: S) -> Option<(T, W)>where
S: GridSampler<T, W>,
pub fn sample<S, W>(&self, sampler: S) -> Option<(T, W)>where
S: GridSampler<T, W>,
Sample grid fields using given sampler.
§Arguments
sampler
- Sampler object that implementsGridSampler
trait.
§Example
use psyche_utils::grid::{Grid, GridSamplerCluster};
let grid = Grid::new(2, 2, 1.0);
let sampler = GridSamplerCluster::new((0, 0), (1, 1));
assert_eq!(grid.sample(sampler).unwrap(), (4.0, 4));
Trait Implementations§
Source§impl<'de, T> Deserialize<'de> for Grid<T>where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for Grid<T>where
T: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl<T> Freeze for Grid<T>
impl<T> RefUnwindSafe for Grid<T>where
T: RefUnwindSafe,
impl<T> Send for Grid<T>where
T: Send,
impl<T> Sync for Grid<T>where
T: Sync,
impl<T> Unpin for Grid<T>where
T: Unpin,
impl<T> UnwindSafe for Grid<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more