@@ -324,17 +324,17 @@ impl<T: ByteViewType + ?Sized> GenericByteViewArray<T> {
324
324
/// Caller is responsible for ensuring that the index is within the bounds
325
325
/// of the array
326
326
pub unsafe fn value_unchecked ( & self , idx : usize ) -> & T :: Native {
327
- let v = self . views . get_unchecked ( idx) ;
327
+ let v = unsafe { self . views . get_unchecked ( idx) } ;
328
328
let len = * v as u32 ;
329
329
let b = if len <= MAX_INLINE_VIEW_LEN {
330
- Self :: inline_value ( v, len as usize )
330
+ unsafe { Self :: inline_value ( v, len as usize ) }
331
331
} else {
332
332
let view = ByteView :: from ( * v) ;
333
- let data = self . buffers . get_unchecked ( view. buffer_index as usize ) ;
333
+ let data = unsafe { self . buffers . get_unchecked ( view. buffer_index as usize ) } ;
334
334
let offset = view. offset as usize ;
335
- data. get_unchecked ( offset..offset + len as usize )
335
+ unsafe { data. get_unchecked ( offset..offset + len as usize ) }
336
336
} ;
337
- T :: Native :: from_bytes_unchecked ( b)
337
+ unsafe { T :: Native :: from_bytes_unchecked ( b) }
338
338
}
339
339
340
340
/// Returns the first `len` bytes the inline value of the view.
@@ -345,7 +345,9 @@ impl<T: ByteViewType + ?Sized> GenericByteViewArray<T> {
345
345
#[ inline( always) ]
346
346
pub unsafe fn inline_value ( view : & u128 , len : usize ) -> & [ u8 ] {
347
347
debug_assert ! ( len <= MAX_INLINE_VIEW_LEN as usize ) ;
348
- std:: slice:: from_raw_parts ( ( view as * const u128 as * const u8 ) . wrapping_add ( 4 ) , len)
348
+ unsafe {
349
+ std:: slice:: from_raw_parts ( ( view as * const u128 as * const u8 ) . wrapping_add ( 4 ) , len)
350
+ }
349
351
}
350
352
351
353
/// Constructs a new iterator for iterating over the values of this array
@@ -541,7 +543,7 @@ impl<T: ByteViewType + ?Sized> GenericByteViewArray<T> {
541
543
#[ inline( always) ]
542
544
unsafe fn copy_view_to_buffer ( & self , i : usize , data_buf : & mut Vec < u8 > ) -> u128 {
543
545
// SAFETY: `i < self.len()` ensures this is in‑bounds.
544
- let raw_view = * self . views ( ) . get_unchecked ( i) ;
546
+ let raw_view = unsafe { * self . views ( ) . get_unchecked ( i) } ;
545
547
let mut bv = ByteView :: from ( raw_view) ;
546
548
547
549
// Inline‑small views stay as‑is.
@@ -550,10 +552,10 @@ impl<T: ByteViewType + ?Sized> GenericByteViewArray<T> {
550
552
} else {
551
553
// SAFETY: `bv.buffer_index` and `bv.offset..bv.offset+bv.length`
552
554
// must both lie within valid ranges for `self.buffers`.
553
- let buffer = self . buffers . get_unchecked ( bv. buffer_index as usize ) ;
555
+ let buffer = unsafe { self . buffers . get_unchecked ( bv. buffer_index as usize ) } ;
554
556
let start = bv. offset as usize ;
555
557
let end = start + bv. length as usize ;
556
- let slice = buffer. get_unchecked ( start..end) ;
558
+ let slice = unsafe { buffer. get_unchecked ( start..end) } ;
557
559
558
560
// Copy out‑of‑line data into our single “0” buffer.
559
561
let new_offset = data_buf. len ( ) as u32 ;
@@ -624,10 +626,10 @@ impl<T: ByteViewType + ?Sized> GenericByteViewArray<T> {
624
626
right : & GenericByteViewArray < T > ,
625
627
right_idx : usize ,
626
628
) -> Ordering {
627
- let l_view = left. views ( ) . get_unchecked ( left_idx) ;
629
+ let l_view = unsafe { left. views ( ) . get_unchecked ( left_idx) } ;
628
630
let l_byte_view = ByteView :: from ( * l_view) ;
629
631
630
- let r_view = right. views ( ) . get_unchecked ( right_idx) ;
632
+ let r_view = unsafe { right. views ( ) . get_unchecked ( right_idx) } ;
631
633
let r_byte_view = ByteView :: from ( * r_view) ;
632
634
633
635
let l_len = l_byte_view. length ;
@@ -853,7 +855,7 @@ impl<'a, T: ByteViewType + ?Sized> ArrayAccessor for &'a GenericByteViewArray<T>
853
855
}
854
856
855
857
unsafe fn value_unchecked ( & self , index : usize ) -> Self :: Item {
856
- GenericByteViewArray :: value_unchecked ( self , index)
858
+ unsafe { GenericByteViewArray :: value_unchecked ( self , index) }
857
859
}
858
860
}
859
861
@@ -999,7 +1001,7 @@ impl BinaryViewArray {
999
1001
/// # Safety
1000
1002
/// Caller is responsible for ensuring that items in array are utf8 data.
1001
1003
pub unsafe fn to_string_view_unchecked ( self ) -> StringViewArray {
1002
- StringViewArray :: new_unchecked ( self . views , self . buffers , self . nulls )
1004
+ unsafe { StringViewArray :: new_unchecked ( self . views , self . buffers , self . nulls ) }
1003
1005
}
1004
1006
}
1005
1007
@@ -1171,7 +1173,10 @@ mod tests {
1171
1173
builder. finish ( )
1172
1174
} ;
1173
1175
assert_eq ! ( array. value( 0 ) , "large payload over 12 bytes" ) ;
1174
- assert_eq ! ( array. value( 1 ) , "another large payload over 12 bytes that double than the first one, so that we can trigger the in_progress in builder re-created" ) ;
1176
+ assert_eq ! (
1177
+ array. value( 1 ) ,
1178
+ "another large payload over 12 bytes that double than the first one, so that we can trigger the in_progress in builder re-created"
1179
+ ) ;
1175
1180
assert_eq ! ( 2 , array. buffers. len( ) ) ;
1176
1181
}
1177
1182
0 commit comments