Wie schiebe ich einen Wert in ein 2D-Vec in Rust?

Hier ist ein wirklich einfacher Versuch an einem 2DVec. Ich versuche, dem letzten Eintrag in der obersten Ebene ein Element hinzuzufügenVec:

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

Ich erhalte diesen Fehler:

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

Ich habe es auch versuchtSome(ref v) undSome(ref mut v) mit den gleichen Ergebnissen. Ich kann keine Dokumentation finden, die diesen Fehler speziell beschreibt. Was ist hier der richtige Ansatz?

EinAntwort auf eine ähnliche Frage empfiehlt sowas eherSome(&mut v). Dann bekomme ich diese Fehler:

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

Wenn ich es versucheSome(&ref mut v) Ich bekomme:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage