Как подтолкнуть элемент к последнему вектору в векторе векторов? - PullRequest
2 голосов
/ 27 июня 2019

Я пытаюсь получить доступ к последнему вектору в векторе векторов (Vec<Vec<u32>>) и указать ему значение, но продолжаю сталкиваться с ошибками. Упрощенная версия того, что я пытаюсь сделать:

let mut pc: Vec<Vec<u32>> = vec![];

pc.push(vec![1]);

pc.last().unwrap().push(2);

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

error[E0596]: cannot borrow data in a `&` reference as mutable                                                                  
   |                                                                                                                            
   |         pc.last().unwrap().push(2);                                                                                        
   |         ^^^^^^^^^^^^^^^^^^ cannot borrow as mutable

Я попытался разыменовать результат unwrap(): (*(pc.last().unwrap())).push(2);, но ошибка сохраняется.

Ожидаемое поведение - вложенный вектор, напоминающий: [[1, 2]].

1 Ответ

4 голосов
/ 27 июня 2019

Вместо last используйте last_mut():

fn main(){
    let mut pc:Vec<Vec<i32>> = vec![];
    pc.push(vec![1]);
    pc.last_mut().unwrap().push(2);
    println!("{:?}", pc);
}

Отпечатки: [[1, 2]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...