@@ -73,7 +73,7 @@ impl<'a, T: 'a> Vector<'a, T> {
7373
7474 #[ inline( always) ]
7575 pub fn len ( & self ) -> usize {
76- read_scalar_at :: < UOffsetT > ( & self . 0 , self . 1 ) as usize
76+ unsafe { read_scalar_at :: < UOffsetT > ( & self . 0 , self . 1 ) as usize }
7777 }
7878 #[ inline( always) ]
7979 pub fn is_empty ( & self ) -> bool {
@@ -84,7 +84,7 @@ impl<'a, T: 'a> Vector<'a, T> {
8484impl < ' a , T : Follow < ' a > + ' a > Vector < ' a , T > {
8585 #[ inline( always) ]
8686 pub fn get ( & self , idx : usize ) -> T :: Inner {
87- debug_assert ! ( idx < read_scalar_at :: < u32 > ( & self . 0 , self . 1 ) as usize ) ;
87+ debug_assert ! ( idx < self . len ( ) as usize ) ;
8888 let sz = size_of :: < T > ( ) ;
8989 debug_assert ! ( sz > 0 ) ;
9090 T :: follow ( self . 0 , self . 1 as usize + SIZE_UOFFSET + sz * idx)
@@ -103,7 +103,7 @@ impl<'a, T: SafeSliceAccess + 'a> Vector<'a, T> {
103103 let loc = self . 1 ;
104104 let sz = size_of :: < T > ( ) ;
105105 debug_assert ! ( sz > 0 ) ;
106- let len = read_scalar_at :: < UOffsetT > ( & buf, loc) as usize ;
106+ let len = unsafe { read_scalar_at :: < UOffsetT > ( & buf, loc) } as usize ;
107107 let data_buf = & buf[ loc + SIZE_UOFFSET ..loc + SIZE_UOFFSET + len * sz] ;
108108 let ptr = data_buf. as_ptr ( ) as * const T ;
109109 let s: & ' a [ T ] = unsafe { from_raw_parts ( ptr, len) } ;
@@ -144,7 +144,7 @@ pub fn follow_cast_ref<'a, T: Sized + 'a>(buf: &'a [u8], loc: usize) -> &'a T {
144144impl < ' a > Follow < ' a > for & ' a str {
145145 type Inner = & ' a str ;
146146 fn follow ( buf : & ' a [ u8 ] , loc : usize ) -> Self :: Inner {
147- let len = read_scalar_at :: < UOffsetT > ( & buf, loc) as usize ;
147+ let len = unsafe { read_scalar_at :: < UOffsetT > ( & buf, loc) } as usize ;
148148 let slice = & buf[ loc + SIZE_UOFFSET ..loc + SIZE_UOFFSET + len] ;
149149 unsafe { from_utf8_unchecked ( slice) }
150150 }
@@ -154,7 +154,7 @@ impl<'a> Follow<'a> for &'a str {
154154fn follow_slice_helper < T > ( buf : & [ u8 ] , loc : usize ) -> & [ T ] {
155155 let sz = size_of :: < T > ( ) ;
156156 debug_assert ! ( sz > 0 ) ;
157- let len = read_scalar_at :: < UOffsetT > ( & buf, loc) as usize ;
157+ let len = unsafe { read_scalar_at :: < UOffsetT > ( & buf, loc) as usize } ;
158158 let data_buf = & buf[ loc + SIZE_UOFFSET ..loc + SIZE_UOFFSET + len * sz] ;
159159 let ptr = data_buf. as_ptr ( ) as * const T ;
160160 let s: & [ T ] = unsafe { from_raw_parts ( ptr, len) } ;
0 commit comments