#可选 #迭代器 #zip #zipping

zip-optional

一个用于与可选迭代器进行解包的迭代器类型

1 个不稳定版本

0.1.0 2024年5月13日

#257 in 压缩

MIT 许可协议

6KB
109

Zip Optional

一个用于与可选可迭代对象进行解包的迭代器类型。

当要解包的可迭代对象没有值(即它是None)时,初始可迭代对象实际上与std::iter::repeat(None)解包。

# use zip_optional::zip_optional;

let a = vec![1, 2];

let mut zipped = zip_optional(a, None::<Vec<i32>>);
assert_eq!(zipped.next().unwrap(), (1, None));
assert_eq!(zipped.next().unwrap(), (2, None));
assert_eq!(zipped.next(), None);

当要解包的可迭代对象有值时,结果是包含要解包的可迭代对象中项的Some(_)序列的结果。

# use zip_optional::zip_optional;

let a = vec![1, 2];
let b = Some(vec![1, 2]);

let mut zipped = zip_optional(a, b);
assert_eq!(zipped.next().unwrap(), (1, Some(1)));
assert_eq!(zipped.next().unwrap(), (2, Some(2)));
assert_eq!(zipped.next(), None);

提供的迭代器也可以与其他迭代方法一起使用,如下所示

# use zip_optional::Zippable;

let mut zipped = vec![1, 2].into_iter().zip_optional(Some(vec![1, 2]));
assert_eq!(zipped.next().unwrap(), (1, Some(1)));
assert_eq!(zipped.next().unwrap(), (2, Some(2)));
assert_eq!(zipped.next(), None);

无运行时依赖