@@ -384,7 +384,10 @@ impl RleDecoder {
384384 } else if self . bit_packed_left > 0 {
385385 let mut num_values =
386386 cmp:: min ( buffer. len ( ) - values_read, self . bit_packed_left as usize ) ;
387- let bit_reader = self . bit_reader . as_mut ( ) . expect ( "bit_reader should be set" ) ;
387+ let bit_reader = self
388+ . bit_reader
389+ . as_mut ( )
390+ . ok_or_else ( || ParquetError :: General ( "bit_reader should be set" . into ( ) ) ) ?;
388391
389392 num_values = bit_reader. get_batch :: < T > (
390393 & mut buffer[ values_read..values_read + num_values] ,
@@ -416,7 +419,10 @@ impl RleDecoder {
416419 } else if self . bit_packed_left > 0 {
417420 let mut num_values =
418421 cmp:: min ( num_values - values_skipped, self . bit_packed_left as usize ) ;
419- let bit_reader = self . bit_reader . as_mut ( ) . expect ( "bit_reader should be set" ) ;
422+ let bit_reader = self
423+ . bit_reader
424+ . as_mut ( )
425+ . ok_or_else ( || ParquetError :: General ( "bit_reader should be set" . into ( ) ) ) ?;
420426
421427 num_values = bit_reader. skip ( num_values, self . bit_width as usize ) ;
422428 if num_values == 0 {
@@ -460,7 +466,10 @@ impl RleDecoder {
460466 self . rle_left -= num_values as u32 ;
461467 values_read += num_values;
462468 } else if self . bit_packed_left > 0 {
463- let bit_reader = self . bit_reader . as_mut ( ) . expect ( "bit_reader should be set" ) ;
469+ let bit_reader = self
470+ . bit_reader
471+ . as_mut ( )
472+ . ok_or_else ( || ParquetError :: General ( "bit_reader should be set" . into ( ) ) ) ?;
464473
465474 loop {
466475 let to_read = index_buf
@@ -499,7 +508,10 @@ impl RleDecoder {
499508
500509 #[ inline]
501510 fn reload ( & mut self ) -> Result < bool > {
502- let bit_reader = self . bit_reader . as_mut ( ) . expect ( "bit_reader should be set" ) ;
511+ let bit_reader = self
512+ . bit_reader
513+ . as_mut ( )
514+ . ok_or_else ( || ParquetError :: General ( "bit_reader should be set" . into ( ) ) ) ?;
503515
504516 if let Some ( indicator_value) = bit_reader. get_vlq_int ( ) {
505517 // fastparquet adds padding to the end of pages. This is not spec-compliant
@@ -514,9 +526,11 @@ impl RleDecoder {
514526 self . rle_left = ( indicator_value >> 1 ) as u32 ;
515527 let value_width = bit_util:: ceil ( self . bit_width as usize , 8 ) ;
516528 self . current_value = bit_reader. get_aligned :: < u64 > ( value_width) ;
517- if self . current_value . is_none ( ) {
518- return Err ( ParquetError :: General ( "parquet_data_error: not enough data for RLE decoding" . into ( ) ) )
519- }
529+ self . current_value . ok_or_else ( || {
530+ ParquetError :: General (
531+ "parquet_data_error: not enough data for RLE decoding" . into ( ) ,
532+ )
533+ } ) ?;
520534 }
521535 Ok ( true )
522536 } else {
0 commit comments