Skip to content

Commit da8ed68

Browse files
committed
NdIndex<IxDyn>: tidy for Vec<Ix> and impl for &T
1 parent fee71af commit da8ed68

File tree

1 file changed

+8
-18
lines changed

1 file changed

+8
-18
lines changed

Diff for: src/dimension/ndindex.rs

+8-18
Original file line numberDiff line numberDiff line change
@@ -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-
231222
unsafe 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

253245
unsafe 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

Comments
 (0)