想象一下(key,value)
对上的迭代器,其中键不是唯一的。创建一个迭代器适配器会有什么缺点,它将迭代器拆分成许多“流”,任何后续的适配器都可以在其上运行?
我正在想象以下伪代码会为每个键返回第10个元素:
let res: HashMap<key_type, value_type> =
my_input_stream.iter()
.group_by(|(key, value)| key)
.skip(9)
.take(1)
.collect();
我知道itertools'group_by
,但它只适用于连续的组。我说的是当团体不连续的时候会发生的事情。我认为我的想法可能会遇到Rust的迭代器设计的许多问题。
更具体地说,我正在考虑的两个实现是:
unzip
。
这有一个问题,你可能无法再链接
适配器之后的适配器。 (类似于:Splitting Iterator<(A,B)> into Iterator<A> and Iterator<B>)next
的迭代器。
这可能需要缓冲大量数据并打破
next
的签名。