pub fn validate_and_zip<T>( buffer1: &[T], buffer2: &mut [T], scratch: &mut [T], chunk_size: usize, required_scratch: usize, chunk_fn: impl FnMut(&[T], &mut [T], &mut [T]), ) -> Result<(), ()>