¿Cómo inserto un valor en un Vec 2D en Rust?

Aquí hay un intento realmente simple en 2DVec. Estoy tratando de agregar un elemento a la última entrada en el nivel superiorVec:

fn main() {
    let mut vec_2d = vec![vec![]];
    if let Some(v) = vec_2d.last() {
        v.push(1);
    }
    println!("{:?}", vec_2d);
}

Me sale este error:

error[E0596]: cannot borrow `*v` as mutable, as it is behind a `&` reference
 --> src/main.rs:4:9
  |
3 |     if let Some(v) = vec_2d.last() {
  |                 - help: consider changing this to be a mutable reference: `&mut std::vec::Vec<i32>`
4 |         v.push(1);
  |         ^ `v` is a `&` reference, so the data it refers to cannot be borrowed as mutable

También he intentadoSome(ref v) ySome(ref mut v) con los mismos resultados No puedo encontrar ninguna documentación que describa este error específicamente. ¿Cuál es el enfoque correcto aquí?

Unresponder a una pregunta similar recomienda algo más comoSome(&mut v). Entonces obtengo estos errores:

error[E0308]: mismatched types
 --> src/main.rs:3:17
  |
3 |     if let Some(&mut v) = vec_2d.last() {
  |                 ^^^^^^ types differ in mutability
  |
  = note: expected type `&std::vec::Vec<_>`
             found type `&mut _`
  = help: did you mean `mut v: &&std::vec::Vec<_>`?

Si lo intentoSome(&ref mut v) Yo obtengo:

error[E0596]: cannot borrow data in a `&` reference as mutable
 --> src/main.rs:3:18
  |
3 |     if let Some(&ref mut v) = vec_2d.last() {
  |                  ^^^^^^^^^ cannot borrow as mutable

Respuestas a la pregunta(2)

Su respuesta a la pregunta