Add fill and fill_with
This commit is contained in:
parent
2a0b5c66a7
commit
0c218c7a2c
1 changed files with 59 additions and 0 deletions
59
src/lib.rs
59
src/lib.rs
|
@ -656,6 +656,49 @@ impl<T> Grid<T> {
|
||||||
rows: self.cols,
|
rows: self.cols,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Fills the grid with elements by cloning `value`.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use grid::*;
|
||||||
|
/// let mut grid = grid![[1,2,3][4,5,6]];
|
||||||
|
/// grid.fill(7);
|
||||||
|
/// assert_eq!(grid[0], [7,7,7]);
|
||||||
|
/// assert_eq!(grid[1], [7,7,7]);
|
||||||
|
/// ```
|
||||||
|
pub fn fill(&mut self, value: T)
|
||||||
|
where
|
||||||
|
T: Clone
|
||||||
|
{
|
||||||
|
self.data.fill(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Fills the grid with elements returned by calling a closure repeatedly.
|
||||||
|
///
|
||||||
|
/// This method uses a closure to create new values. If you'd rather
|
||||||
|
/// [`Clone`] a given value, use [`fill`]. If you want to use the [`Default`]
|
||||||
|
/// trait to generate values, you can pass [`Default::default`] as the
|
||||||
|
/// argument.
|
||||||
|
///
|
||||||
|
/// [`fill`]: Grid::fill
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use grid::*;
|
||||||
|
/// let mut grid = grid![[1,2,3][4,5,6]];
|
||||||
|
/// grid.fill_with(Default::default);
|
||||||
|
/// assert_eq!(grid[0], [0,0,0]);
|
||||||
|
/// assert_eq!(grid[1], [0,0,0]);
|
||||||
|
/// ```
|
||||||
|
pub fn fill_with<F>(&mut self, f: F)
|
||||||
|
where
|
||||||
|
F: FnMut() -> T,
|
||||||
|
{
|
||||||
|
self.data.fill_with(f)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Clone> Clone for Grid<T> {
|
impl<T: Clone> Clone for Grid<T> {
|
||||||
|
@ -1164,4 +1207,20 @@ mod test {
|
||||||
let grid: Grid<u8> = grid![[1,2,3][4,5,6]];
|
let grid: Grid<u8> = grid![[1,2,3][4,5,6]];
|
||||||
assert_eq!(format!("{:?}", grid.transpose()), "[[1, 4][2, 5][3, 6]]");
|
assert_eq!(format!("{:?}", grid.transpose()), "[[1, 4][2, 5][3, 6]]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn fill() {
|
||||||
|
let mut grid: Grid<u8> = grid![[1,2,3][4,5,6]];
|
||||||
|
grid.fill(7);
|
||||||
|
assert_eq!(grid[0], [7,7,7]);
|
||||||
|
assert_eq!(grid[1], [7,7,7]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn fill_with() {
|
||||||
|
let mut grid: Grid<u8> = grid![[1,2,3][4,5,6]];
|
||||||
|
grid.fill_with(Default::default);
|
||||||
|
assert_eq!(grid[0], [0,0,0]);
|
||||||
|
assert_eq!(grid[1], [0,0,0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue