34 lines
771 B
Rust
34 lines
771 B
Rust
#[macro_export]
|
|
#[cfg(feature = "vec")]
|
|
macro_rules! matrix {
|
|
($x:expr; $m:expr, $n:expr) => {
|
|
vec![vec![$x; $n]; $m]
|
|
};
|
|
($($($x:expr),*);*) => {
|
|
{
|
|
let mut temp_vec = vec![];
|
|
{} // Needed to avoid clippy warning
|
|
$(
|
|
temp_vec.push(vec![$($x),*]);
|
|
)*
|
|
temp_vec
|
|
}
|
|
};
|
|
}
|
|
|
|
#[cfg(all(test, feature = "vec"))]
|
|
mod tests {
|
|
|
|
#[test]
|
|
fn test_matrix() {
|
|
let matrix = matrix![1, 2, 3; 4, 5, 6; 7, 8, 9];
|
|
assert_eq!(matrix, vec![vec![1, 2, 3], vec![4, 5, 6], vec![7, 8, 9]]);
|
|
}
|
|
|
|
#[test]
|
|
fn test_matrix_with_single_value() {
|
|
let matrix = matrix![0; 2, 3];
|
|
assert_eq!(matrix, vec![vec![0, 0, 0], vec![0, 0, 0]]);
|
|
}
|
|
}
|