use crate::ops::string_similarity::validation::{to_u32, validate_pair, SimilarityError};
pub fn hamming(a: &[u8], b: &[u8]) -> Result<u32, SimilarityError> {
validate_pair(a, b)?;
if a.len() != b.len() {
return Err(format!(
"Fix: hamming distance requires equal-length inputs, got len(a)={} len(b)={}",
a.len(),
b.len()
));
}
let distance = a.iter().zip(b).filter(|(left, right)| left != right).count();
to_u32(distance, "hamming distance")
}
pub const WGSL: &str = concat!(
include_str!("../wgsl/common_params.wgsl"),
"\n",
include_str!("wgsl/hamming.wgsl"),
);