當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Rust Iterator.unzip用法及代碼示例

本文簡要介紹rust語言中 std::iter::Iterator.unzip 的用法。

用法

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where    FromA: Default + Extend<A>,    FromB: Default + Extend<B>,    Self: 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大神的英文原創作品 std::iter::Iterator.unzip。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。