RosettaCodeData/Task/Create-a-two-dimensional-array-at-runtime/Rust/create-a-two-dimensional-array-at-runtime.rust
2017-09-25 22:28:19 +02:00

28 lines
746 B
Text

use std::env;
fn main() {
let mut args = env::args().skip(1).flat_map(|num| num.parse());
let rows = args.next().expect("Expected number of rows as first argument");
let cols = args.next().expect("Expected number of columns as second argument");
assert!(rows != 0 && cols != 0);
// Creates a vector of vectors with all elements initialized to 0.
let mut v = init_vec(rows, || init_vec(cols, || 0));
v[0][0] = 1;
println!("{}", v[0][0]);
}
// Returns a dynamically-allocated array of size `n`,
// initialized with the values computed by `f`
fn init_vec<F,T>(n: usize, f: F) -> Vec<T>
where F: Fn() -> T
{
let mut vec = Vec::with_capacity(n);
for _ in 0..n {
vec.push(f());
}
vec
}