@@ -219,22 +219,34 @@ impl<'a> IntoDimension for &'a [Ix] {
219219 }
220220}
221221
222- unsafe impl < ' a > NdIndex < IxDyn > for & ' a IxDyn {
222+ unsafe impl < ' a > NdIndex < IxDyn > for & ' a [ Ix ] {
223223 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 )
225225 }
226226 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 ( )
228230 }
229231}
230232
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+ {
232237 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 )
234239 }
235240 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)
239251 }
240252}
0 commit comments