Struct ilyvion_util::multi_dimensional::Vec2D
source · [−]pub struct Vec2D<T> { /* private fields */ }
Expand description
This struct represents a two-dimensional window into a one-dimensional Vec
. This is
accomplished through taking either a columns
parameter, and dividing the size of the Vec
evenly into rows
based on its length, or by taking rows
and columns
directly, trusting
that the caller provided correct values. The latter option provides a zero-cost abstraction.
Example
let mut window = Vec2D::from(vec![0u32; 8], 2);
window[0][1] = 1;
window[1][1] = 2;
window[2][1] = 3;
window[3][1] = 4;
let values = window.into_inner();
assert_eq!(values, [0, 1, 0, 2, 0, 3, 0, 4]);
Implementations
sourceimpl<T> Vec2D<T>
impl<T> Vec2D<T>
sourcepub fn new_with<F>(rows: usize, columns: usize, func: F) -> Self where
F: FnMut(usize, usize) -> T,
pub fn new_with<F>(rows: usize, columns: usize, func: F) -> Self where
F: FnMut(usize, usize) -> T,
Creates a new Vec2D
with rows divided into columns
length (i.e., w[rows][columns]
)
placing the result of func
in each respective entry.
Panics
If rows * columns > usize::MAX
.
Examples
let v = Vec2D::new_with(2, 2, |y, x| 100 * y + 10 * x);
let values = v.into_inner();
assert_eq!(values, [0, 10, 100, 110]);
sourcepub fn from(raw: Vec<T>, columns: usize) -> Self
pub fn from(raw: Vec<T>, columns: usize) -> Self
Creates a new Vec2D
with rows divided into columns
length. (I.e., w[rows][columns]
)
Panics
If the length of raw
cannot be divided evenly into column
s
sourcepub fn from_unchecked(raw: Vec<T>, rows: usize, columns: usize) -> Self
pub fn from_unchecked(raw: Vec<T>, rows: usize, columns: usize) -> Self
Creates a new Vec2D
divided into rows
number of slices with columns
entries each.
Providing incorrect values for rows
and columns
will most likely lead to run-time panics
due to indexing outside the range of the Vec
.
Using this constructor gives you an essentially zero-cost abstraction.
sourcepub fn into_inner(self) -> Vec<T>
pub fn into_inner(self) -> Vec<T>
Unwraps this Vec2D<T>
, returning the underlying Vec
.
Trait Implementations
Auto Trait Implementations
impl<T> RefUnwindSafe for Vec2D<T> where
T: RefUnwindSafe,
impl<T> Send for Vec2D<T> where
T: Send,
impl<T> Sync for Vec2D<T> where
T: Sync,
impl<T> Unpin for Vec2D<T> where
T: Unpin,
impl<T> UnwindSafe for Vec2D<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more