diff --git a/tsar-rs/Cargo.toml b/tsar-rs/Cargo.toml index 51ad741..063c87d 100644 --- a/tsar-rs/Cargo.toml +++ b/tsar-rs/Cargo.toml @@ -16,7 +16,7 @@ sha1 = "0.11.0" smallvec = "1.9.0" thiserror = "2.0.1" zip = { version = "8.1.0", default-features = false, features = ["deflate"] } -zstd = "0.13.0" +zstd = "0.14.0" [target.'cfg(windows)'.dependencies] zfp-sys-cc = "0.2.0" diff --git a/tsar-rs/src/data_type.rs b/tsar-rs/src/data_type.rs index 4dfb28c..3d760a1 100644 --- a/tsar-rs/src/data_type.rs +++ b/tsar-rs/src/data_type.rs @@ -138,19 +138,19 @@ impl DataType { match self { DataType::Byte => { const N: usize = std::mem::size_of::(); - let src_it = src.chunks_exact(N); - let targ_it = targ.chunks_exact(N); - let mut err = src_it - .remainder() + let (src_chunks, src_rem) = src.as_chunks::(); + let (targ_chunks, targ_rem) = targ.as_chunks::(); + let mut err = src_rem .iter() - .zip(targ_it.remainder().iter()) + .zip(targ_rem.iter()) .map(|(src, targ)| (targ ^ src).count_ones()) .sum::() as f64; - err += src_it - .zip(targ_it) + err += src_chunks + .iter() + .zip(targ_chunks.iter()) .map(|(src, targ)| { - let src = ::from_le_bytes(src.try_into().unwrap()); - let targ = ::from_le_bytes(targ.try_into().unwrap()); + let src = ::from_le_bytes(*src); + let targ = ::from_le_bytes(*targ); (targ ^ src).count_ones() }) .sum::() as f64;