#zip #iterator #check #length #input #equals #lazy-evaluation

nightly zip_eq

检查输入长度相同的Zip迭代器

1个不稳定版本

0.1.0 2022年3月21日

#2041 in 算法

MIT许可证

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.

无运行时依赖