@@ -128,7 +128,9 @@ impl<'a> Vector<'a> {
128128 ) -> Result < Self > {
129129 let owned_slice = owned. as_deref ( ) ;
130130 let refer_slice = refer. as_ref ( ) . map ( |& x| x) ;
131- let data = owned_slice. unwrap_or_else ( || refer_slice. unwrap ( ) ) ;
131+ let data = owned_slice. or ( refer_slice) . ok_or_else ( || {
132+ LimboError :: InternalError ( "Vector must have either owned or refer data" . to_string ( ) )
133+ } ) ?;
132134 match vector_type {
133135 VectorType :: Float32Dense => {
134136 if data. len ( ) % 4 != 0 {
@@ -167,7 +169,12 @@ impl<'a> Vector<'a> {
167169 }
168170 let original_len = data. len ( ) ;
169171 let dims_bytes = & data[ original_len - 4 ..] ;
170- let dims = u32:: from_le_bytes ( dims_bytes. try_into ( ) . unwrap ( ) ) as usize ;
172+ let dims = u32:: from_le_bytes ( [
173+ dims_bytes[ 0 ] ,
174+ dims_bytes[ 1 ] ,
175+ dims_bytes[ 2 ] ,
176+ dims_bytes[ 3 ] ,
177+ ] ) as usize ;
171178 let owned = owned. map ( |mut x| {
172179 x. truncate ( original_len - 4 ) ;
173180 x
@@ -187,17 +194,25 @@ impl<'a> Vector<'a> {
187194 pub fn bin_len ( & self ) -> usize {
188195 let owned = self . owned . as_ref ( ) . map ( |x| x. len ( ) ) ;
189196 let refer = self . refer . as_ref ( ) . map ( |x| x. len ( ) ) ;
190- owned. unwrap_or_else ( || refer. unwrap ( ) )
197+ owned
198+ . or ( refer)
199+ . expect ( "Vector invariant: exactly one of owned or refer must be Some" )
191200 }
192201
193202 pub fn bin_data ( & ' a self ) -> & ' a [ u8 ] {
194203 let owned = self . owned . as_deref ( ) ;
195204 let refer = self . refer . as_ref ( ) . map ( |& x| x) ;
196- owned. unwrap_or_else ( || refer. unwrap ( ) )
205+ owned
206+ . or ( refer)
207+ . expect ( "Vector invariant: exactly one of owned or refer must be Some" )
197208 }
198209
199210 pub fn bin_eject ( self ) -> Vec < u8 > {
200- self . owned . unwrap_or_else ( || self . refer . unwrap ( ) . to_vec ( ) )
211+ self . owned . unwrap_or_else ( || {
212+ self . refer
213+ . expect ( "Vector invariant: exactly one of owned or refer must be Some" )
214+ . to_vec ( )
215+ } )
201216 }
202217
203218 /// # Safety
0 commit comments