Speedup init grid
This commit is contained in:
parent
182d349c23
commit
b7dff2e573
1 changed files with 11 additions and 9 deletions
20
src/lib.rs
20
src/lib.rs
|
@ -34,7 +34,8 @@ macro_rules! grid {
|
||||||
};
|
};
|
||||||
( [$( $x:expr ),* ]) => { {
|
( [$( $x:expr ),* ]) => { {
|
||||||
let vec = vec![$($x),*];
|
let vec = vec![$($x),*];
|
||||||
$crate::Grid::from_vec(&vec, vec.len())
|
let len = vec.len();
|
||||||
|
$crate::Grid::from_vec(vec, len)
|
||||||
} };
|
} };
|
||||||
( [$( $x0:expr ),*] $([$( $x:expr ),*])* ) => {
|
( [$( $x0:expr ),*] $([$( $x:expr ),*])* ) => {
|
||||||
{
|
{
|
||||||
|
@ -50,7 +51,7 @@ macro_rules! grid {
|
||||||
$( vec.push($x); )*
|
$( vec.push($x); )*
|
||||||
)*
|
)*
|
||||||
|
|
||||||
$crate::Grid::from_vec(&vec, cols)
|
$crate::Grid::from_vec(vec, cols)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -110,7 +111,7 @@ impl<T: Clone> Grid<T> {
|
||||||
/// use grid::Grid;
|
/// use grid::Grid;
|
||||||
/// Grid::from_vec(&vec![1,2,3,4,5], 3);
|
/// Grid::from_vec(&vec![1,2,3,4,5], 3);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn from_vec(vec: &Vec<T>, cols: usize) -> Grid<T> {
|
pub fn from_vec(vec: Vec<T>, cols: usize) -> Grid<T> {
|
||||||
if vec.len() == 0 {
|
if vec.len() == 0 {
|
||||||
if cols == 0 {
|
if cols == 0 {
|
||||||
return grid![];
|
return grid![];
|
||||||
|
@ -121,9 +122,10 @@ impl<T: Clone> Grid<T> {
|
||||||
if vec.len() % cols != 0 {
|
if vec.len() % cols != 0 {
|
||||||
panic!("Vector length must be a multiple of cols.");
|
panic!("Vector length must be a multiple of cols.");
|
||||||
}
|
}
|
||||||
|
let rows = vec.len();
|
||||||
Grid {
|
Grid {
|
||||||
data: vec.to_vec(),
|
data: vec,
|
||||||
rows: vec.len() / cols,
|
rows: rows / cols,
|
||||||
cols: cols,
|
cols: cols,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,26 +228,26 @@ mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn from_vec_zero() {
|
fn from_vec_zero() {
|
||||||
let grid: Grid<u8> = Grid::from_vec(&vec![], 0);
|
let grid: Grid<u8> = Grid::from_vec(vec![], 0);
|
||||||
assert_eq!(grid.size(), (0, 0));
|
assert_eq!(grid.size(), (0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn from_vec_panics_1() {
|
fn from_vec_panics_1() {
|
||||||
let _: Grid<u8> = Grid::from_vec(&vec![1, 2, 3], 0);
|
let _: Grid<u8> = Grid::from_vec(vec![1, 2, 3], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn from_vec_panics_2() {
|
fn from_vec_panics_2() {
|
||||||
let _: Grid<u8> = Grid::from_vec(&vec![1, 2, 3], 2);
|
let _: Grid<u8> = Grid::from_vec(vec![1, 2, 3], 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn from_vec_panics_3() {
|
fn from_vec_panics_3() {
|
||||||
let _: Grid<u8> = Grid::from_vec(&vec![], 1);
|
let _: Grid<u8> = Grid::from_vec(vec![], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Reference in a new issue