我是Rust的新手,在文档中找不到将hashmap的值收集到向量中的方法。
假设我有一个哈希图:
score_table: HashMap<Id, Score>
我想所有的Score成Vec
all_scores: Vec<Score>
我很想使用,values但由于值不是vec,所以它不起作用:
all_scores = score_table.values()
我知道可以Values实现该ExactSizeIterator特征,但是我不知道如何将迭代器的所有值收集到向量中,而无需手动编写for循环并将向量中的值一个接一个地推入。
[编辑1]
我还尝试着use std::iter::FromIterator;降落到类似:
all_scores = Vec::from_iter(score_table.values());
Run Code Online (Sandbox Code Playgroud)
expected type `std::vec::Vec<Score>`
found type `std::vec::Vec<&Score>`
Run Code Online (Sandbox Code Playgroud)
[编辑2]
由于这个问题,我将其更改为:
all_scores = Vec::from_iter(score_table.values().cloned());
Run Code Online (Sandbox Code Playgroud)
并且不会对产生错误cargo check。
这是一个好方法吗?