我可以为范围类型执行此操作:
但对于以下内容,我无法做到相同的效果:
为了避免这种错误,我需要执行以下操作:
为什么会这样?我原以为这两种方式是做同一件事情的不同方式。
(0..3).collect::<Vec<i32>>();
但对于以下内容,我无法做到相同的效果:
[0, 1, 2].iter().collect::<Vec<i32>>();
我得到的结果是:
error: the trait `core::iter::FromIterator<&_>` is not implemented for the type `collections::vec::Vec<i32>` [E0277]
为了避免这种错误,我需要执行以下操作:
[0, 1, 2].iter().map(|&x| x).collect::<Vec<i32>>();
为什么会这样?我原以为这两种方式是做同一件事情的不同方式。
.cloned()
,而不是.map(|&x| x)
。 - Lambda Fairy