88//! can gather contiguous runs without materializing one index per element.
99
1010use itertools:: Itertools ;
11- use num_traits:: AsPrimitive ;
1211use vortex_buffer:: BufferMut ;
1312use vortex_error:: VortexResult ;
1413use vortex_error:: vortex_bail;
@@ -72,15 +71,10 @@ pub(crate) fn index_value_to_usize<T: UnsignedPType>(value: T) -> usize {
7271}
7372
7473#[ inline]
75- pub ( crate ) fn index_value_to_u64 < T : UnsignedPType + AsPrimitive < u64 > > ( value : T ) -> u64 {
76- value. as_ ( )
77- }
78-
79- #[ inline]
80- pub ( crate ) fn checked_range_end ( start : u64 , length : usize ) -> VortexResult < u64 > {
74+ pub ( crate ) fn checked_range_end ( start : usize , length : usize ) -> VortexResult < usize > {
8175 start
82- . checked_add ( length as u64 )
83- . ok_or_else ( || vortex_error:: vortex_err!( "PiecewiseSequentialArray range overflows u64 " ) )
76+ . checked_add ( length)
77+ . ok_or_else ( || vortex_error:: vortex_err!( "PiecewiseSequentialArray range overflows usize " ) )
8478}
8579
8680pub ( crate ) fn materialize_ranges < S , L > (
@@ -89,7 +83,7 @@ pub(crate) fn materialize_ranges<S, L>(
8983 output_len : usize ,
9084) -> VortexResult < BufferMut < u64 > >
9185where
92- S : UnsignedPType + AsPrimitive < u64 > ,
86+ S : UnsignedPType ,
9387 L : UnsignedPType ,
9488{
9589 let starts = starts. as_slice :: < S > ( ) ;
@@ -98,14 +92,14 @@ where
9892 let mut computed_len = 0usize ;
9993
10094 for ( & start, & length) in starts. iter ( ) . zip_eq ( lengths) {
101- let start = index_value_to_u64 ( start) ;
95+ let start: usize = start. as_ ( ) ;
10296 let length = index_value_to_usize ( length) ;
103- checked_range_end ( start, length) ?;
97+ let end = checked_range_end ( start, length) ?;
10498 computed_len = computed_len. checked_add ( length) . ok_or_else ( || {
10599 vortex_error:: vortex_err!( "PiecewiseSequentialArray output length overflows usize" )
106100 } ) ?;
107101
108- values. extend ( ( 0 ..length ) . map ( |offset| start + offset as u64 ) ) ;
102+ values. extend ( ( start..end ) . map ( |value| value as u64 ) ) ;
109103 }
110104
111105 if computed_len != output_len {
0 commit comments