From 66a4b380f8c3dcec2064acba3f7711c465f64a3d Mon Sep 17 00:00:00 2001 From: Ashley Anderson Date: Thu, 16 Jun 2022 12:15:23 -0400 Subject: [PATCH 1/7] fix(ci): lint with clippy --- src/data_traits.rs | 1 + src/impl_constructors.rs | 1 + src/iterators/lanes.rs | 18 ++++++++---------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/data_traits.rs b/src/data_traits.rs index 679f9c782..acf4b0b7a 100644 --- a/src/data_traits.rs +++ b/src/data_traits.rs @@ -162,6 +162,7 @@ pub unsafe trait DataMut: Data + RawDataMut { /// Returns whether the array has unique access to its data. #[doc(hidden)] #[inline] + #[allow(clippy::wrong_self_convention)] // mut needed for Arc types fn is_unique(&mut self) -> bool { self.try_is_unique().unwrap() } diff --git a/src/impl_constructors.rs b/src/impl_constructors.rs index 4a18ff832..049384ceb 100644 --- a/src/impl_constructors.rs +++ b/src/impl_constructors.rs @@ -634,6 +634,7 @@ where #[deprecated(note = "This method is hard to use correctly. Use `uninit` instead.", since = "0.15.0")] + #[allow(clippy::uninit_vec)] // this is explicitly intended to create uninitialized memory /// Create an array with uninitialized elements, shape `shape`. /// /// Prefer to use [`uninit()`](ArrayBase::uninit) if possible, because it is diff --git a/src/iterators/lanes.rs b/src/iterators/lanes.rs index cda783a80..7286e0696 100644 --- a/src/iterators/lanes.rs +++ b/src/iterators/lanes.rs @@ -39,17 +39,16 @@ impl<'a, A, D: Dimension> Lanes<'a, A, D> { let ndim = v.ndim(); let len; let stride; - let iter_v; - if ndim == 0 { + let iter_v = if ndim == 0 { len = 1; stride = 1; - iter_v = v.try_remove_axis(Axis(0)) + v.try_remove_axis(Axis(0)) } else { let i = axis.index(); len = v.dim[i]; stride = v.strides[i] as isize; - iter_v = v.try_remove_axis(axis) - } + v.try_remove_axis(axis) + }; Lanes { inner_len: len, inner_stride: stride, @@ -108,17 +107,16 @@ impl<'a, A, D: Dimension> LanesMut<'a, A, D> { let ndim = v.ndim(); let len; let stride; - let iter_v; - if ndim == 0 { + let iter_v = if ndim == 0 { len = 1; stride = 1; - iter_v = v.try_remove_axis(Axis(0)) + v.try_remove_axis(Axis(0)) } else { let i = axis.index(); len = v.dim[i]; stride = v.strides[i] as isize; - iter_v = v.try_remove_axis(axis) - } + v.try_remove_axis(axis) + }; LanesMut { inner_len: len, inner_stride: stride, From d9cf511e494c32507608a399257a72aaa89e8873 Mon Sep 17 00:00:00 2001 From: Ashley Anderson Date: Thu, 16 Jun 2022 15:04:03 -0400 Subject: [PATCH 2/7] fix(clippy): remove unused lifetimes from trait impls --- src/arrayformat.rs | 12 ++++++------ src/arraytraits.rs | 2 +- src/dimension/mod.rs | 2 +- src/iterators/mod.rs | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/arrayformat.rs b/src/arrayformat.rs index 5998a0c1e..428390660 100644 --- a/src/arrayformat.rs +++ b/src/arrayformat.rs @@ -189,7 +189,7 @@ where /// to each element. /// /// The array is shown in multiline style. -impl<'a, A: fmt::Display, S, D: Dimension> fmt::Display for ArrayBase +impl fmt::Display for ArrayBase where S: Data, { @@ -203,7 +203,7 @@ where /// to each element. /// /// The array is shown in multiline style. -impl<'a, A: fmt::Debug, S, D: Dimension> fmt::Debug for ArrayBase +impl fmt::Debug for ArrayBase where S: Data, { @@ -231,7 +231,7 @@ where /// to each element. /// /// The array is shown in multiline style. -impl<'a, A: fmt::LowerExp, S, D: Dimension> fmt::LowerExp for ArrayBase +impl fmt::LowerExp for ArrayBase where S: Data, { @@ -245,7 +245,7 @@ where /// to each element. /// /// The array is shown in multiline style. -impl<'a, A: fmt::UpperExp, S, D: Dimension> fmt::UpperExp for ArrayBase +impl fmt::UpperExp for ArrayBase where S: Data, { @@ -258,7 +258,7 @@ where /// to each element. /// /// The array is shown in multiline style. -impl<'a, A: fmt::LowerHex, S, D: Dimension> fmt::LowerHex for ArrayBase +impl fmt::LowerHex for ArrayBase where S: Data, { @@ -272,7 +272,7 @@ where /// to each element. /// /// The array is shown in multiline style. -impl<'a, A: fmt::Binary, S, D: Dimension> fmt::Binary for ArrayBase +impl fmt::Binary for ArrayBase where S: Data, { diff --git a/src/arraytraits.rs b/src/arraytraits.rs index 7d84dc5f2..74ce9d644 100644 --- a/src/arraytraits.rs +++ b/src/arraytraits.rs @@ -252,7 +252,7 @@ where } } -impl<'a, S, D> hash::Hash for ArrayBase +impl hash::Hash for ArrayBase where D: Dimension, S: Data, diff --git a/src/dimension/mod.rs b/src/dimension/mod.rs index f0752142b..2ba3b1ffa 100644 --- a/src/dimension/mod.rs +++ b/src/dimension/mod.rs @@ -333,7 +333,7 @@ where } } -impl<'a> DimensionExt for [Ix] { +impl DimensionExt for [Ix] { #[inline] fn axis(&self, axis: Axis) -> Ix { self[axis.index()] diff --git a/src/iterators/mod.rs b/src/iterators/mod.rs index e660a55d0..85da56fe5 100644 --- a/src/iterators/mod.rs +++ b/src/iterators/mod.rs @@ -103,7 +103,7 @@ impl Iterator for Baseiter { } } -impl<'a, A, D: Dimension> ExactSizeIterator for Baseiter { +impl ExactSizeIterator for Baseiter { fn len(&self) -> usize { match self.index { None => 0, From 70db56128b601c365017a71afc9ef5b35a80807c Mon Sep 17 00:00:00 2001 From: Jim Turner Date: Sat, 30 Jul 2022 15:21:05 -0400 Subject: [PATCH 3/7] Add MSRV to Cargo.toml --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 926ea064c..2b0b93b3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ name = "ndarray" version = "0.15.5" edition = "2018" +rust-version = "1.51" authors = [ "Ulrik Sverdrup \"bluss\"", "Jim Turner" From 51203e528a850cd60a321015181008467192f1b0 Mon Sep 17 00:00:00 2001 From: Ashley Anderson Date: Thu, 16 Jun 2022 15:14:04 -0400 Subject: [PATCH 4/7] fix(clippy): change abs() as usize to unsigned_abs() --- src/dimension/dimension_trait.rs | 2 +- src/dimension/mod.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dimension/dimension_trait.rs b/src/dimension/dimension_trait.rs index a4d73b1b1..6ebb9cad4 100644 --- a/src/dimension/dimension_trait.rs +++ b/src/dimension/dimension_trait.rs @@ -293,7 +293,7 @@ pub trait Dimension: let mut cstride = 1; for &i in order.slice() { // a dimension of length 1 can have unequal strides - if dim_slice[i] != 1 && (strides[i] as isize).abs() as usize != cstride { + if dim_slice[i] != 1 && (strides[i] as isize).unsigned_abs() != cstride { return false; } cstride *= dim_slice[i]; diff --git a/src/dimension/mod.rs b/src/dimension/mod.rs index 2ba3b1ffa..dd34052ec 100644 --- a/src/dimension/mod.rs +++ b/src/dimension/mod.rs @@ -185,7 +185,7 @@ where .try_fold(0usize, |acc, (&d, &s)| { let s = s as isize; // Calculate maximum possible absolute movement along this axis. - let off = d.saturating_sub(1).checked_mul(s.abs() as usize)?; + let off = d.saturating_sub(1).checked_mul(s.unsigned_abs())?; acc.checked_add(off) }) .ok_or_else(|| from_kind(ErrorKind::Overflow))?; @@ -457,7 +457,7 @@ pub fn do_slice(dim: &mut usize, stride: &mut usize, slice: Slice) -> isize { }; // Update dimension. - let abs_step = step.abs() as usize; + let abs_step = step.unsigned_abs(); *dim = if abs_step == 1 { m } else { @@ -651,7 +651,7 @@ pub fn slices_intersect( Some(m) => m, None => return false, }; - if ind < min || ind > max || (ind - min) % step.abs() as usize != 0 { + if ind < min || ind > max || (ind - min) % step.unsigned_abs() != 0 { return false; } } From d7aec2a27a186bdf12983929cf23a425e8390a54 Mon Sep 17 00:00:00 2001 From: Ashley Anderson Date: Thu, 16 Jun 2022 15:31:10 -0400 Subject: [PATCH 5/7] fix(doctest): allow warning of unused #[macro_use] in itertools doctest --- src/itertools.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/itertools.rs b/src/itertools.rs index 4fa8145ab..8edfd75eb 100644 --- a/src/itertools.rs +++ b/src/itertools.rs @@ -86,7 +86,8 @@ where /// **Note:** To enable the macros in this crate, use the `#[macro_use]` /// attribute when importing the crate: /// -/// ``` +/// ```no_run +/// # #[allow(unused_imports)] /// #[macro_use] extern crate itertools; /// # fn main() { } /// ``` From 84aa5f981576257acf353366ce93f7fd54e28f43 Mon Sep 17 00:00:00 2001 From: Jim Turner Date: Sat, 30 Jul 2022 14:35:43 -0400 Subject: [PATCH 6/7] fix(clippy): remove unnecessary derefs --- src/dimension/dynindeximpl.rs | 4 ++-- src/dimension/ndindex.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dimension/dynindeximpl.rs b/src/dimension/dynindeximpl.rs index b75db91c5..85b34bdbe 100644 --- a/src/dimension/dynindeximpl.rs +++ b/src/dimension/dynindeximpl.rs @@ -21,7 +21,7 @@ impl Deref for IxDynRepr { debug_assert!(len as usize <= ar.len()); unsafe { ar.get_unchecked(..len as usize) } } - IxDynRepr::Alloc(ref ar) => &*ar, + IxDynRepr::Alloc(ref ar) => ar, } } } @@ -33,7 +33,7 @@ impl DerefMut for IxDynRepr { debug_assert!(len as usize <= ar.len()); unsafe { ar.get_unchecked_mut(..len as usize) } } - IxDynRepr::Alloc(ref mut ar) => &mut *ar, + IxDynRepr::Alloc(ref mut ar) => ar, } } } diff --git a/src/dimension/ndindex.rs b/src/dimension/ndindex.rs index 718ee059b..4d4046bc8 100644 --- a/src/dimension/ndindex.rs +++ b/src/dimension/ndindex.rs @@ -230,7 +230,7 @@ unsafe impl<'a> NdIndex for &'a IxDyn { unsafe impl<'a> NdIndex for &'a [Ix] { fn index_checked(&self, dim: &IxDyn, strides: &IxDyn) -> Option { - stride_offset_checked(dim.ix(), strides.ix(), *self) + stride_offset_checked(dim.ix(), strides.ix(), self) } fn index_unchecked(&self, strides: &IxDyn) -> isize { zip(strides.ix(), *self) From f1fd0d43104b84a826a3f8092d03049e3e14f885 Mon Sep 17 00:00:00 2001 From: Jim Turner Date: Sat, 30 Jul 2022 14:36:13 -0400 Subject: [PATCH 7/7] fix(clippy): remove unnecessary keyword in format --- src/arrayformat.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arrayformat.rs b/src/arrayformat.rs index 428390660..ae781df6a 100644 --- a/src/arrayformat.rs +++ b/src/arrayformat.rs @@ -217,7 +217,7 @@ where ", shape={:?}, strides={:?}, layout={:?}", self.shape(), self.strides(), - layout = self.view().layout() + self.view().layout(), )?; match D::NDIM { Some(ndim) => write!(f, ", const ndim={}", ndim)?,