@@ -219,22 +219,34 @@ impl<'a> IntoDimension for &'a [Ix] {
219
219
}
220
220
}
221
221
222
- unsafe impl < ' a > NdIndex < IxDyn > for & ' a IxDyn {
222
+ unsafe impl < ' a > NdIndex < IxDyn > for & ' a [ Ix ] {
223
223
fn index_checked ( & self , dim : & IxDyn , strides : & IxDyn ) -> Option < isize > {
224
- ( * * self ) . index_checked ( dim , strides)
224
+ stride_offset_checked ( dim . ix ( ) , strides. ix ( ) , * self )
225
225
}
226
226
fn index_unchecked ( & self , strides : & IxDyn ) -> isize {
227
- ( * * self ) . index_unchecked ( strides)
227
+ zip ( strides. ix ( ) , * self )
228
+ . map ( |( & s, & i) | stride_offset ( i, s) )
229
+ . sum ( )
228
230
}
229
231
}
230
232
231
- unsafe impl < ' a > NdIndex < IxDyn > for & ' a [ Ix ] {
233
+ unsafe impl < ' a , T > NdIndex < IxDyn > for & T
234
+ where
235
+ T : NdIndex < IxDyn > ,
236
+ {
232
237
fn index_checked ( & self , dim : & IxDyn , strides : & IxDyn ) -> Option < isize > {
233
- stride_offset_checked ( dim . ix ( ) , strides . ix ( ) , * self )
238
+ ( * self ) . index_checked ( dim , strides )
234
239
}
235
240
fn index_unchecked ( & self , strides : & IxDyn ) -> isize {
236
- zip ( strides. ix ( ) , * self )
237
- . map ( |( & s, & i) | stride_offset ( i, s) )
238
- . sum ( )
241
+ ( * self ) . index_unchecked ( strides)
242
+ }
243
+ }
244
+
245
+ unsafe impl < ' a > NdIndex < IxDyn > for Vec < Ix > {
246
+ fn index_checked ( & self , dim : & IxDyn , strides : & IxDyn ) -> Option < isize > {
247
+ ( & * * self ) . index_checked ( dim, strides)
248
+ }
249
+ fn index_unchecked ( & self , strides : & IxDyn ) -> isize {
250
+ ( & * * self ) . index_unchecked ( strides)
239
251
}
240
252
}
0 commit comments