MCPcopy Create free account
hub / github.com/apache/arrow-rs / make_view

Function make_view

arrow-array/src/builder/generic_bytes_view_builder.rs:676–706  ·  view source on GitHub ↗
(data: &[u8], block_id: u32, offset: u32)

Source from the content-addressed store, hash-verified

674/// which slows down things.
675#[inline(never)]
676pub fn make_view(data: &[u8], block_id: u32, offset: u32) -> u128 {
677 let len = data.len();
678
679 // Generate specialized code for each potential small string length
680 // to improve performance
681 match len {
682 0 => make_inlined_view::<0>(data),
683 1 => make_inlined_view::<1>(data),
684 2 => make_inlined_view::<2>(data),
685 3 => make_inlined_view::<3>(data),
686 4 => make_inlined_view::<4>(data),
687 5 => make_inlined_view::<5>(data),
688 6 => make_inlined_view::<6>(data),
689 7 => make_inlined_view::<7>(data),
690 8 => make_inlined_view::<8>(data),
691 9 => make_inlined_view::<9>(data),
692 10 => make_inlined_view::<10>(data),
693 11 => make_inlined_view::<11>(data),
694 12 => make_inlined_view::<12>(data),
695 // When string is longer than 12 bytes, it can't be inlined, we create a ByteView instead.
696 _ => {
697 let view = ByteView {
698 length: len as u32,
699 prefix: u32::from_le_bytes(data[0..4].try_into().unwrap()),
700 buffer_index: block_id,
701 offset,
702 };
703 view.as_u128()
704 }
705 }
706}
707
708#[cfg(test)]
709mod tests {

Callers 6

decode_binary_view_innerFunction · 0.85
read_implMethod · 0.85
readMethod · 0.85
append_view_uncheckedMethod · 0.85

Calls 2

as_u128Method · 0.80
lenMethod · 0.45

Tested by 2