Как вставить значение в 2D Vec в Rust?

Вот действительно простая попытка 2DVec, Я пытаюсь добавить элемент к последней записи на верхнем уровнеVec:

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

Я получаю эту ошибку:

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

Я также пыталсяSome(ref v)&nbsp;а такжеSome(ref mut v)&nbsp;с такими же результатами. Я не могу найти документацию, которая описывает эту ошибку конкретно. Какой правильный подход здесь?

ответ на аналогичный вопрос&nbsp;рекомендует что-то более похожееSome(&mut v), Тогда я получаю эти ошибки:

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

Если я попробуюSome(&ref mut v)&nbsp;Я получил:

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