11use vortex_array:: array:: PrimitiveArray ;
2- use vortex_array:: stats:: ArrayStatistics as _;
32use vortex_array:: validity:: Validity ;
43use vortex_array:: variants:: PrimitiveArrayTrait ;
54use vortex_array:: IntoArrayData ;
@@ -12,37 +11,35 @@ use crate::ZigZagArray;
1211pub fn zigzag_encode ( parray : PrimitiveArray ) -> VortexResult < ZigZagArray > {
1312 let validity = parray. validity ( ) ;
1413 let encoded = match parray. ptype ( ) {
15- PType :: I8 => zigzag_encode_primitive :: < i8 > ( parray. maybe_null_slice ( ) , validity) ,
16- PType :: I16 => zigzag_encode_primitive :: < i16 > ( parray. maybe_null_slice ( ) , validity) ,
17- PType :: I32 => zigzag_encode_primitive :: < i32 > ( parray. maybe_null_slice ( ) , validity) ,
18- PType :: I64 => zigzag_encode_primitive :: < i64 > ( parray. maybe_null_slice ( ) , validity) ,
14+ PType :: I8 => zigzag_encode_primitive :: < i8 > ( parray. into_maybe_null_slice ( ) , validity) ,
15+ PType :: I16 => zigzag_encode_primitive :: < i16 > ( parray. into_maybe_null_slice ( ) , validity) ,
16+ PType :: I32 => zigzag_encode_primitive :: < i32 > ( parray. into_maybe_null_slice ( ) , validity) ,
17+ PType :: I64 => zigzag_encode_primitive :: < i64 > ( parray. into_maybe_null_slice ( ) , validity) ,
1918 _ => vortex_bail ! (
2019 "ZigZag can only encode signed integers, got {}" ,
2120 parray. ptype( )
2221 ) ,
2322 } ;
24- let zz = ZigZagArray :: try_new ( encoded. into_array ( ) ) ?;
25- zz. inherit_statistics ( parray. statistics ( ) ) ;
26- Ok ( zz)
23+ ZigZagArray :: try_new ( encoded. into_array ( ) )
2724}
2825
2926fn zigzag_encode_primitive < T : ExternalZigZag + NativePType > (
30- values : & [ T ] ,
27+ values : Vec < T > ,
3128 validity : Validity ,
3229) -> PrimitiveArray
3330where
3431 <T as ExternalZigZag >:: UInt : NativePType ,
3532{
36- PrimitiveArray :: from_vec ( values. iter ( ) . map ( |v| T :: encode ( * v ) ) . collect ( ) , validity)
33+ PrimitiveArray :: from_vec ( values. into_iter ( ) . map ( T :: encode) . collect ( ) , validity)
3734}
3835
3936pub fn zigzag_decode ( parray : PrimitiveArray ) -> VortexResult < PrimitiveArray > {
4037 let validity = parray. validity ( ) ;
4138 let decoded = match parray. ptype ( ) {
42- PType :: U8 => zigzag_decode_primitive :: < i8 > ( parray. maybe_null_slice ( ) , validity) ,
43- PType :: U16 => zigzag_decode_primitive :: < i16 > ( parray. maybe_null_slice ( ) , validity) ,
44- PType :: U32 => zigzag_decode_primitive :: < i32 > ( parray. maybe_null_slice ( ) , validity) ,
45- PType :: U64 => zigzag_decode_primitive :: < i64 > ( parray. maybe_null_slice ( ) , validity) ,
39+ PType :: U8 => zigzag_decode_primitive :: < i8 > ( parray. into_maybe_null_slice ( ) , validity) ,
40+ PType :: U16 => zigzag_decode_primitive :: < i16 > ( parray. into_maybe_null_slice ( ) , validity) ,
41+ PType :: U32 => zigzag_decode_primitive :: < i32 > ( parray. into_maybe_null_slice ( ) , validity) ,
42+ PType :: U64 => zigzag_decode_primitive :: < i64 > ( parray. into_maybe_null_slice ( ) , validity) ,
4643 _ => vortex_bail ! (
4744 "ZigZag can only decode unsigned integers, got {}" ,
4845 parray. ptype( )
@@ -52,13 +49,13 @@ pub fn zigzag_decode(parray: PrimitiveArray) -> VortexResult<PrimitiveArray> {
5249}
5350
5451fn zigzag_decode_primitive < T : ExternalZigZag + NativePType > (
55- values : & [ T :: UInt ] ,
52+ values : Vec < T :: UInt > ,
5653 validity : Validity ,
5754) -> PrimitiveArray
5855where
5956 <T as ExternalZigZag >:: UInt : NativePType ,
6057{
61- PrimitiveArray :: from_vec ( values. iter ( ) . map ( |v| T :: decode ( * v ) ) . collect ( ) , validity)
58+ PrimitiveArray :: from_vec ( values. into_iter ( ) . map ( T :: decode) . collect ( ) , validity)
6259}
6360
6461#[ cfg( test) ]
0 commit comments