当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Iterator.unzip用法及代码示例


本文简要介绍rust语言中 core::iter::Iterator.unzip 的用法。

用法

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where    FromA: Default + Extend<A>,    FromB: Default + Extend<B>,    Self: Sized + Iterator<Item = (A, B)>,

将对的迭代器转换为一对容器。

unzip() 使用整个对迭代器,生成两个集合:一个来自对的左侧元素,一个来自右侧元素。

从某种意义上说,这个函数与 zip 正好相反。

例子

基本用法:

let a = [(1, 2), (3, 4), (5, 6)];

let (left, right): (Vec<_>, Vec<_>) = a.iter().cloned().unzip();

assert_eq!(left, [1, 3, 5]);
assert_eq!(right, [2, 4, 6]);

// you can also unzip multiple nested tuples at once
let a = [(1, (2, 3)), (4, (5, 6))];

let (x, (y, z)): (Vec<_>, (Vec<_>, Vec<_>)) = a.iter().cloned().unzip();
assert_eq!(x, [1, 4]);
assert_eq!(y, [2, 5]);
assert_eq!(z, [3, 6]);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 core::iter::Iterator.unzip。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。