【发布时间】:2019-01-07 09:39:59
【问题描述】:
如果集合实现了FromIterator,则可以使用Iterator trait 的collect 方法将迭代器转换为集合。
let vec = (0..10).collect::<Vec<_>>();
let devec = (0..10).collect::<VecDeque<_>>();
Vec 和 VecDeque 实现 FromIterator 特征。
Iterator::collect方法的实现是:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}
Rust 如何理解从FromIterator::from_iter(self) 调用Vec 或VecDeque 的from_iter 方法?
【问题讨论】:
-
你可以改写
let vec: Vec<_> = (0..10).collect(),它以同样的方式推断类型(并且更符合IMO的习惯)