@@ -219,15 +219,6 @@ impl<'a> IntoDimension for &'a [Ix] {
219219 }
220220}
221221
222- unsafe impl < ' a > NdIndex < IxDyn > for & ' a IxDyn {
223- fn index_checked ( & self , dim : & IxDyn , strides : & IxDyn ) -> Option < isize > {
224- ( * * self ) . index_checked ( dim, strides)
225- }
226- fn index_unchecked ( & self , strides : & IxDyn ) -> isize {
227- ( * * self ) . index_unchecked ( strides)
228- }
229- }
230-
231222unsafe impl < ' a > NdIndex < IxDyn > for & ' a [ Ix ] {
232223 fn index_checked ( & self , dim : & IxDyn , strides : & IxDyn ) -> Option < isize > {
233224 stride_offset_checked ( dim. ix ( ) , strides. ix ( ) , * self )
@@ -239,24 +230,23 @@ unsafe impl<'a> NdIndex<IxDyn> for &'a [Ix] {
239230 }
240231}
241232
242- unsafe impl < ' a > NdIndex < IxDyn > for & ' a Vec < Ix > {
233+ unsafe impl < ' a , T > NdIndex < IxDyn > for & T
234+ where
235+ T : NdIndex < IxDyn > ,
236+ {
243237 fn index_checked ( & self , dim : & IxDyn , strides : & IxDyn ) -> Option < isize > {
244- stride_offset_checked ( dim . ix ( ) , strides . ix ( ) , * self )
238+ ( * self ) . index_checked ( dim , strides )
245239 }
246240 fn index_unchecked ( & self , strides : & IxDyn ) -> isize {
247- zip ( strides. ix ( ) , * self )
248- . map ( |( & s, & i) | stride_offset ( i, s) )
249- . sum ( )
241+ ( * self ) . index_unchecked ( strides)
250242 }
251243}
252244
253245unsafe impl < ' a > NdIndex < IxDyn > for Vec < Ix > {
254246 fn index_checked ( & self , dim : & IxDyn , strides : & IxDyn ) -> Option < isize > {
255- stride_offset_checked ( dim . ix ( ) , strides . ix ( ) , self )
247+ ( & * * self ) . index_checked ( dim , strides )
256248 }
257249 fn index_unchecked ( & self , strides : & IxDyn ) -> isize {
258- zip ( strides. ix ( ) , self )
259- . map ( |( & s, i) | stride_offset ( * i, s) )
260- . sum ( )
250+ ( & * * self ) . index_unchecked ( strides)
261251 }
262252}
0 commit comments