2121use crate :: bit_iterator:: BitSliceIterator ;
2222use arrow_buffer:: buffer:: { BooleanBuffer , NullBuffer } ;
2323use arrow_buffer:: {
24- bit_util , i256 , ArrowNativeType , Buffer , IntervalDayTime , IntervalMonthDayNano , MutableBuffer ,
24+ ArrowNativeType , Buffer , IntervalDayTime , IntervalMonthDayNano , MutableBuffer , bit_util , i256 ,
2525} ;
2626use arrow_schema:: { ArrowError , DataType , UnionMode } ;
2727use std:: mem;
@@ -281,7 +281,7 @@ impl ArrayData {
281281 ) -> Self {
282282 let mut skip_validation = UnsafeFlag :: new ( ) ;
283283 // SAFETY: caller responsible for ensuring data is valid
284- skip_validation. set ( true ) ;
284+ unsafe { skip_validation. set ( true ) } ;
285285
286286 ArrayDataBuilder {
287287 data_type,
@@ -476,21 +476,20 @@ impl ArrayData {
476476 result += buffer_size;
477477 }
478478 BufferSpec :: VariableWidth => {
479- let buffer_len: usize ;
480- match self . data_type {
479+ let buffer_len = match self . data_type {
481480 DataType :: Utf8 | DataType :: Binary => {
482481 let offsets = self . typed_offsets :: < i32 > ( ) ?;
483- buffer_len = ( offsets[ self . len ] - offsets[ 0 ] ) as usize ;
482+ ( offsets[ self . len ] - offsets[ 0 ] ) as usize
484483 }
485484 DataType :: LargeUtf8 | DataType :: LargeBinary => {
486485 let offsets = self . typed_offsets :: < i64 > ( ) ?;
487- buffer_len = ( offsets[ self . len ] - offsets[ 0 ] ) as usize ;
486+ ( offsets[ self . len ] - offsets[ 0 ] ) as usize
488487 }
489488 _ => {
490489 return Err ( ArrowError :: NotYetImplemented ( format ! (
491- "Invalid data type for VariableWidth buffer. Expected Utf8, LargeUtf8, Binary or LargeBinary. Got {}" ,
492- self . data_type
493- ) ) )
490+ "Invalid data type for VariableWidth buffer. Expected Utf8, LargeUtf8, Binary or LargeBinary. Got {}" ,
491+ self . data_type
492+ ) ) ) ;
494493 }
495494 } ;
496495 result += buffer_len;
@@ -554,7 +553,7 @@ impl ArrayData {
554553 if let DataType :: Struct ( _) = self . data_type ( ) {
555554 // Slice into children
556555 let new_offset = self . offset + offset;
557- let new_data = ArrayData {
556+ ArrayData {
558557 data_type : self . data_type ( ) . clone ( ) ,
559558 len : length,
560559 offset : new_offset,
@@ -566,9 +565,7 @@ impl ArrayData {
566565 . map ( |data| data. slice ( offset, length) )
567566 . collect ( ) ,
568567 nulls : self . nulls . as_ref ( ) . map ( |x| x. slice ( offset, length) ) ,
569- } ;
570-
571- new_data
568+ }
572569 } else {
573570 let mut new_data = self . clone ( ) ;
574571
@@ -784,15 +781,19 @@ impl ArrayData {
784781 if buffer. len ( ) < min_buffer_size {
785782 return Err ( ArrowError :: InvalidArgumentError ( format ! (
786783 "Need at least {} bytes in buffers[{}] in array of type {:?}, but got {}" ,
787- min_buffer_size, i, self . data_type, buffer. len( )
784+ min_buffer_size,
785+ i,
786+ self . data_type,
787+ buffer. len( )
788788 ) ) ) ;
789789 }
790790
791791 let align_offset = buffer. as_ptr ( ) . align_offset ( * alignment) ;
792792 if align_offset != 0 {
793793 return Err ( ArrowError :: InvalidArgumentError ( format ! (
794794 "Misaligned buffers[{i}] in array of type {:?}, offset from expected alignment of {alignment} by {}" ,
795- self . data_type, align_offset. min( alignment - align_offset)
795+ self . data_type,
796+ align_offset. min( alignment - align_offset)
796797 ) ) ) ;
797798 }
798799 }
@@ -806,7 +807,10 @@ impl ArrayData {
806807 if buffer. len ( ) < min_buffer_size {
807808 return Err ( ArrowError :: InvalidArgumentError ( format ! (
808809 "Need at least {} bytes for bitmap in buffers[{}] in array of type {:?}, but got {}" ,
809- min_buffer_size, i, self . data_type, buffer. len( )
810+ min_buffer_size,
811+ i,
812+ self . data_type,
813+ buffer. len( )
810814 ) ) ) ;
811815 }
812816 }
@@ -1058,7 +1062,11 @@ impl ArrayData {
10581062 if field_data. len < self . len {
10591063 return Err ( ArrowError :: InvalidArgumentError ( format ! (
10601064 "{} child array #{} for field {} has length smaller than expected for struct array ({} < {})" ,
1061- self . data_type, i, field. name( ) , field_data. len, self . len
1065+ self . data_type,
1066+ i,
1067+ field. name( ) ,
1068+ field_data. len,
1069+ self . len
10621070 ) ) ) ;
10631071 }
10641072 }
@@ -1090,7 +1098,9 @@ impl ArrayData {
10901098 if mode == & UnionMode :: Sparse && field_data. len < ( self . len + self . offset ) {
10911099 return Err ( ArrowError :: InvalidArgumentError ( format ! (
10921100 "Sparse union child array #{} has length smaller than expected for union array ({} < {})" ,
1093- i, field_data. len, self . len + self . offset
1101+ i,
1102+ field_data. len,
1103+ self . len + self . offset
10941104 ) ) ) ;
10951105 }
10961106 }
@@ -1282,7 +1292,7 @@ impl ArrayData {
12821292 "non-nullable child of type {} contains nulls not present in parent {}" ,
12831293 child. data_type, self . data_type
12841294 ) ) ) ,
1285- }
1295+ } ;
12861296 }
12871297 } ;
12881298
@@ -1988,6 +1998,7 @@ impl ArrayDataBuilder {
19881998 ///
19891999 /// Note: This is shorthand for
19902000 /// ```rust
2001+ /// # #[expect(unsafe_op_in_unsafe_fn)]
19912002 /// # let mut builder = arrow_data::ArrayDataBuilder::new(arrow_schema::DataType::Null);
19922003 /// # let _ = unsafe {
19932004 /// builder.skip_validation(true).build().unwrap()
@@ -1999,7 +2010,7 @@ impl ArrayDataBuilder {
19992010 /// The same caveats as [`ArrayData::new_unchecked`]
20002011 /// apply.
20012012 pub unsafe fn build_unchecked ( self ) -> ArrayData {
2002- self . skip_validation ( true ) . build ( ) . unwrap ( )
2013+ unsafe { self . skip_validation ( true ) } . build ( ) . unwrap ( )
20032014 }
20042015
20052016 /// Creates an `ArrayData`, consuming `self`
@@ -2098,7 +2109,9 @@ impl ArrayDataBuilder {
20982109 /// If validation is skipped, the buffers must form a valid Arrow array,
20992110 /// otherwise undefined behavior will result
21002111 pub unsafe fn skip_validation ( mut self , skip_validation : bool ) -> Self {
2101- self . skip_validation . set ( skip_validation) ;
2112+ unsafe {
2113+ self . skip_validation . set ( skip_validation) ;
2114+ }
21022115 self
21032116 }
21042117}
0 commit comments