(
array: &GenericByteViewArray<T>,
random_state: &RandomState,
hashes_buffer: &mut [u64],
rehash: bool,
)
| 370 | /// with the new hash using `combine_hashes` |
| 371 | #[cfg(not(feature = "force_hash_collisions"))] |
| 372 | fn hash_generic_byte_view_array<T: ByteViewType>( |
| 373 | array: &GenericByteViewArray<T>, |
| 374 | random_state: &RandomState, |
| 375 | hashes_buffer: &mut [u64], |
| 376 | rehash: bool, |
| 377 | ) { |
| 378 | // instantiate the correct version based on presence of nulls and external buffers |
| 379 | match ( |
| 380 | array.null_count() != 0, |
| 381 | !array.data_buffers().is_empty(), |
| 382 | rehash, |
| 383 | ) { |
| 384 | // no nulls or buffers ==> hash the inlined views directly |
| 385 | // don't call the inner function as Rust seems better able to inline this simpler code (2-3% faster) |
| 386 | (false, false, false) => { |
| 387 | for (hash, &view) in hashes_buffer.iter_mut().zip(array.views().iter()) { |
| 388 | *hash = view.hash_one(random_state); |
| 389 | } |
| 390 | } |
| 391 | (false, false, true) => { |
| 392 | for (hash, &view) in hashes_buffer.iter_mut().zip(array.views().iter()) { |
| 393 | let mut hasher = seeded_state(*hash).build_hasher(); |
| 394 | view.hash_write(&mut hasher); |
| 395 | *hash = hasher.finish(); |
| 396 | } |
| 397 | } |
| 398 | (false, true, false) => hash_string_view_array_inner::<T, false, true, false>( |
| 399 | array, |
| 400 | random_state, |
| 401 | hashes_buffer, |
| 402 | ), |
| 403 | (false, true, true) => hash_string_view_array_inner::<T, false, true, true>( |
| 404 | array, |
| 405 | random_state, |
| 406 | hashes_buffer, |
| 407 | ), |
| 408 | (true, false, false) => hash_string_view_array_inner::<T, true, false, false>( |
| 409 | array, |
| 410 | random_state, |
| 411 | hashes_buffer, |
| 412 | ), |
| 413 | (true, false, true) => hash_string_view_array_inner::<T, true, false, true>( |
| 414 | array, |
| 415 | random_state, |
| 416 | hashes_buffer, |
| 417 | ), |
| 418 | (true, true, false) => hash_string_view_array_inner::<T, true, true, false>( |
| 419 | array, |
| 420 | random_state, |
| 421 | hashes_buffer, |
| 422 | ), |
| 423 | (true, true, true) => hash_string_view_array_inner::<T, true, true, true>( |
| 424 | array, |
| 425 | random_state, |
| 426 | hashes_buffer, |
| 427 | ), |
| 428 | } |
| 429 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…