fn worker(prefix: &str, iter: ParIter<'_, usize>) -> Vec<(usize, Vec<u8>)>
Each worker thread chooses the next available index then computes the hash and patches the final vec with the result.