1个不稳定版本
0.1.0 | 2022年3月21日 |
---|
#2041 in 算法
25KB
633 行
zip-eq
检查输入长度是否相同的zip迭代器,无论是立即在构建时,还是延迟检查。
示例
立即检查
use zip_eq::ZipEq;
let a = [1, 2];
let b = [3, 4];
let mut zipped = a.zip_eq_eager(b); // length check happens here
assert_eq!(zipped.next(), Some((1, 3)));
assert_eq!(zipped.next(), Some((2, 4)));
assert_eq!(zipped.next(), None);
延迟检查
use zip_eq::ZipEq;
let a = [1, 2];
let b = [3, 4];
let mut zipped = a.zip_eq_lazy(b);
assert_eq!(zipped.next(), Some((1, 3)));
assert_eq!(zipped.next(), Some((2, 4)));
assert_eq!(zipped.next(), None); // length check happens here
lib.rs
:
检查输入长度相同的Zip迭代器。
提供了两种类型的迭代器。第一种是在构建时立即检查大小是否相等。这可以在迭代器的长度已知且可信的情况下进行(参见 core::iter::TrustedLen
以获取更多信息)。这是通过使用 ZipEq::zip_eq_eager
来实现的。
或者当用户确定长度相等时,可以使用不安全的 ZipEq::zip_eq_unchecked
方法来避免检查。
第二种类型的迭代器是在迭代过程中检查大小是否相等。可以使用 ZipEq::zip_eq_lazy
来构建。
示例
use zip_eq::ZipEq;
let a = [1, 2];
let b = [3, 4];
let mut zipped = a.zip_eq_lazy(b);
assert_eq!(zipped.next(), Some((1, 3)));
assert_eq!(zipped.next(), Some((2, 4)));
assert_eq!(zipped.next(), None);
use zip_eq::ZipEq;
let a = [1, 2];
let b = [3, 4];
let mut zipped = a.zip_eq_eager(b);
assert_eq!(zipped.next(), Some((1, 3)));
assert_eq!(zipped.next(), Some((2, 4)));
assert_eq!(zipped.next(), None);
use zip_eq::ZipEq;
let a = [1, 2, 3];
let b = [3, 4];
let mut zipped = a.zip_eq_eager(b); // length equality check happens here.
use zip_eq::ZipEq;
let a = [1, 2, 3];
let b = [3, 4];
let mut zipped = a.zip_eq_lazy(b);
assert_eq!(zipped.next(), Some((1, 3)));
assert_eq!(zipped.next(), Some((2, 4)));
zipped.next(); // length equality check happens here.