@@ -25,7 +25,7 @@ use arrow_schema::{ArrowError, DataType, FieldRef};
25
25
use crate :: array:: { make_array, print_long_array} ;
26
26
use crate :: iterator:: GenericListViewArrayIter ;
27
27
use crate :: {
28
- new_empty_array, Array , ArrayAccessor , ArrayRef , ArrowPrimitiveType , FixedSizeListArray ,
28
+ new_empty_array, Array , ArrayAccessor , ArrayRef , FixedSizeListArray ,
29
29
OffsetSizeTrait ,
30
30
} ;
31
31
@@ -409,15 +409,13 @@ impl<OffsetSize: OffsetSizeTrait> From<FixedSizeListArray> for GenericListViewAr
409
409
DataType :: FixedSizeList ( f, size) => ( f, * size as usize ) ,
410
410
_ => unreachable ! ( ) ,
411
411
} ;
412
- let iter = std:: iter:: repeat ( size) . take ( value. len ( ) ) ;
413
- let mut offsets = Vec :: with_capacity ( iter. size_hint ( ) . 0 ) ;
414
- offsets. push ( OffsetSize :: usize_as ( 0 ) ) ;
412
+ let mut offsets = Vec :: with_capacity ( size) ;
415
413
let mut acc = 0_usize ;
416
414
let iter = std:: iter:: repeat ( size) . take ( value. len ( ) ) ;
417
415
let mut sizes = Vec :: with_capacity ( iter. size_hint ( ) . 0 ) ;
418
416
for size in iter {
419
- acc = acc. checked_add ( size) . expect ( "usize overflow" ) ;
420
417
offsets. push ( OffsetSize :: usize_as ( acc) ) ;
418
+ acc = acc. checked_add ( size) . expect ( "usize overflow" ) ;
421
419
sizes. push ( OffsetSize :: usize_as ( size) ) ;
422
420
}
423
421
OffsetSize :: from_usize ( acc) . expect ( "offset overflow" ) ;
@@ -535,17 +533,13 @@ mod tests {
535
533
0 ,
536
534
list_array
537
535
. value( 0 )
538
- . as_any( )
539
- . downcast_ref:: <Int32Array >( )
540
- . unwrap( )
536
+ . as_primitive:: <Int32Type >( )
541
537
. value( 0 )
542
538
) ;
543
539
assert_eq ! (
544
540
0 ,
545
541
unsafe { list_array. value_unchecked( 0 ) }
546
- . as_any( )
547
- . downcast_ref:: <Int32Array >( )
548
- . unwrap( )
542
+ . as_primitive:: <Int32Type >( )
549
543
. value( 0 )
550
544
) ;
551
545
for i in 0 ..3 {
@@ -581,17 +575,13 @@ mod tests {
581
575
0 ,
582
576
list_array
583
577
. value( 0 )
584
- . as_any( )
585
- . downcast_ref:: <Int32Array >( )
586
- . unwrap( )
578
+ . as_primitive:: <Int32Type >( )
587
579
. value( 0 )
588
580
) ;
589
581
assert_eq ! (
590
582
0 ,
591
583
unsafe { list_array. value_unchecked( 0 ) }
592
- . as_any( )
593
- . downcast_ref:: <Int32Array >( )
594
- . unwrap( )
584
+ . as_primitive:: <Int32Type >( )
595
585
. value( 0 )
596
586
) ;
597
587
for i in 0 ..3 {
@@ -955,7 +945,15 @@ mod tests {
955
945
. iter ( )
956
946
. map ( |x| x. map ( |x| x. as_primitive :: < Int32Type > ( ) . values ( ) . to_vec ( ) ) )
957
947
. collect ( ) ;
958
- assert_eq ! ( values, vec![ Some ( vec![ 1 , 2 , 3 ] ) , None , Some ( vec![ 4 , 5 , 6 ] ) ] )
948
+ assert_eq ! ( values, vec![ Some ( vec![ 1 , 2 , 3 ] ) , None , Some ( vec![ 4 , 5 , 6 ] ) ] ) ;
949
+ let offsets = list. value_offsets ( ) ;
950
+ assert_eq ! ( offsets, & [ 0 , 3 , 6 ] ) ;
951
+ let sizes = list. value_sizes ( ) ;
952
+ assert_eq ! ( sizes, & [ 3 , 3 , 3 ] ) ;
959
953
}
960
954
955
+
956
+
957
+
958
+
961
959
}
0 commit comments