我有一个针对切片
Rust 通过在
现在它可以正常工作,但感觉有些奇怪。特别是,
有更好的方法吗?
&[(T, U)]
的 Iterator<Item = &(T, U)>
。我希望能将该迭代器解压缩成其组件 (即获得 (Vec<&T>, Vec<&U>)
)。Rust 通过在
Interator
上提供的 .unzip()
方法来提供解压功能。points.iter().unzip()
很遗憾,这并不能像原样工作,因为.unzip()
期望迭代器项目的类型为元组,而我的是元组的引用。
为了解决这个问题,我尝试编写一个函数,用于在引用和引用元组之间进行转换:
fn distribute_ref<'a, T, U>(x: &'a (T, U)) -> (&'a T, &'a U) {
(&x.0, &x.1)
}
然后我可以对生成的迭代器进行map
操作,以得到一些.unzip()
可以处理的内容:
points.iter().map(distribute_ref).unzip()
现在它可以正常工作,但感觉有些奇怪。特别是,
distribute_ref
似乎是Rust标准库提供的相当简单的操作。我猜要么这个函数已经存在并且我找不到它,要么我的方法不对。有更好的方法吗?