Я новичок в Rust и не могу найти способ сбора значений хеш-карты в вектор в документации.
Допустим, у меня есть хеш-карта:
score_table: HashMap<Id, Score>
и я хочу получить все Score
в Vec
all_scores: Vec<Score>
Я испытывал желание использовать values
, но он не работаетпоскольку значения не являются vec:
all_scores = score_table.values()
Я знаю, что Values
реализует черту ExactSizeIterator
, но я не знаю, как собрать все значения итератора вvector без ручной записи цикла for и добавления значений в векторе один за другим.
[edit 1]
Я также пытался use std::iter::FromIterator;
, но приземлился в что-то вроде:
all_scores = Vec::from_iter(score_table.values());
expected type `std::vec::Vec<Score>`
found type `std::vec::Vec<&Score>`
[править 2]
благодаря этому вопросу , я изменил его на:
all_scores = Vec::from_iter(score_table.values().cloned());
и он не выдает ошибокна cargo check
.
Это хороший способ сделать это?