Rust の多次元 Vec を初期化するマクロ
小ネタ.
Rust で多次元 Vec
(dp[0][1][2]
のように使えるもの) を作りたい.例えば None
で初期化された $2 \times 3 \times 4$ の Vec<Vec<Vec<Option<T>>>>
を作るときはこう書く.
vec![vec![vec![None; 4]; 3]; 2]
うーん.という訳でこんなマクロ.
macro_rules! nested_vec { ($e:expr; $n:expr) => { vec![$e; $n] }; ($e:expr; $n:expr $(; $m:expr)+) => { vec![nested_vec!($e $(; $m)+); $n] }; }
こんな風に書ける.
nested_vec![None; 2; 3; 4]