A zip iterator that checks that its inputs have the same lengths, either eagerly at the moment of construction, or lazily.
Eager check ```rust use zip_eq::ZipEq;
let a = [1, 2]; let b = [3, 4]; let mut zipped = a.zipeqeager(b); // length check happens here
asserteq!(zipped.next(), Some((1, 3)));
asserteq!(zipped.next(), Some((2, 4)));
asserteq!(zipped.next(), None);
Lazy check
rust
use zipeq::ZipEq;
let a = [1, 2]; let b = [3, 4]; let mut zipped = a.zipeqlazy(b);
asserteq!(zipped.next(), Some((1, 3))); asserteq!(zipped.next(), Some((2, 4))); assert_eq!(zipped.next(), None); // length check happens here ```