Como faço para inserir um valor em um Vec 2D em Rust?

Aqui está uma tentativa realmente simples de um 2DVec. Estou tentando adicionar um elemento à última entrada no nível superiorVec:

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

Eu recebo este erro:

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

Eu também tenteiSome(ref v) eSome(ref mut v) com os mesmos resultados. Não consigo encontrar nenhuma documentação que descreva esse erro especificamente. Qual é a abordagem correta aqui?

Aresponder a uma pergunta semelhante recomenda algo mais comoSome(&mut v). Então eu recebo estes erros:

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<_>`?

Se eu tentarSome(&ref mut v) Eu recebo:

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

questionAnswers(2)

yourAnswerToTheQuestion