Crear un vector de vectores en óxido

Este código no compilará:

fn main() {
    let m1 = vec![1, 2, 3];
    let m2 = vec![&m1, &m1, &m1];
    let m3 = vec![vec![1, 2, 3], vec![4, 5, 6], vec![7, 8, 9]];

    for i in &m2 {
        for j in i {
            println!("{}", j);
        }
    }

    for i in &m3 {
        for j in i {
            println!("{}", j);
        }
    }
}
error[E0277]: the trait bound `&&std::vec::Vec<{integer}>: std::iter::Iterator` is not satisfied
 --> src/main.rs:8:18
  |
8 |         for j in i {
  |                  ^ `&&std::vec::Vec<{integer}>` is not an iterator; maybe try calling `.iter()` or a similar method
  |
  = help: the trait `std::iter::Iterator` is not implemented for `&&std::vec::Vec<{integer}>`
  = note: required by `std::iter::IntoIterator::into_iter`

Como esm2 diferente quem3 tal quem3 no causa problemas, perom2 impide la compilación?

¿Hay una manera más fácil de crear un vector de vector de ... a cualquier profundidad deseada? La forma en que lo tengo funcionando (m3) parece tan torpe.

Respuestas a la pregunta(1)

Su respuesta a la pregunta