From 03668a171d2c5c91fd613a23105d65491d9fe2d4 Mon Sep 17 00:00:00 2001
From: Vinzent Steinberg <Vinzent.Steinberg@gmail.com>
Date: Fri, 31 Jul 2020 17:38:32 +0200
Subject: [PATCH 1/3] Fix some minor clippy warnings

---
 src/distributions/weighted_index.rs |  2 +-
 src/rngs/mock.rs                    |  5 ++---
 src/seq/mod.rs                      | 22 +++++++++-------------
 3 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/src/distributions/weighted_index.rs b/src/distributions/weighted_index.rs
index a75d41eae0..ccedd4aa49 100644
--- a/src/distributions/weighted_index.rs
+++ b/src/distributions/weighted_index.rs
@@ -161,7 +161,7 @@ impl<X: SampleUniform + PartialOrd> WeightedIndex<X> {
             if *w < zero {
                 return Err(WeightedError::InvalidWeight);
             }
-            if i >= self.cumulative_weights.len() + 1 {
+            if i > self.cumulative_weights.len() {
                 return Err(WeightedError::TooMany);
             }
 
diff --git a/src/rngs/mock.rs b/src/rngs/mock.rs
index fc2e34146e..df1221bb7c 100644
--- a/src/rngs/mock.rs
+++ b/src/rngs/mock.rs
@@ -72,13 +72,12 @@ impl RngCore for StepRng {
 
 #[cfg(test)]
 mod tests {
-    use super::*;
-
     #[test]
     #[cfg(feature = "serde1")]
     fn test_serialization_step_rng() {
         let some_rng = StepRng::new(42, 7);
-        let de_some_rng: StepRng = bincode::deserialize(&bincode::serialize(&some_rng).unwrap()).unwrap();
+        let de_some_rng: StepRng =
+            bincode::deserialize(&bincode::serialize(&some_rng).unwrap()).unwrap();
         assert_eq!(some_rng.v, de_some_rng.v);
         assert_eq!(some_rng.a, de_some_rng.a);
 
diff --git a/src/seq/mod.rs b/src/seq/mod.rs
index d7a12e1617..c4ffec608f 100644
--- a/src/seq/mod.rs
+++ b/src/seq/mod.rs
@@ -44,13 +44,11 @@ use crate::Rng;
 /// ```
 /// use rand::seq::SliceRandom;
 ///
-/// fn main() {
-///     let mut rng = rand::thread_rng();
-///     let mut bytes = "Hello, random!".to_string().into_bytes();
-///     bytes.shuffle(&mut rng);
-///     let str = String::from_utf8(bytes).unwrap();
-///     println!("{}", str);
-/// }
+/// let mut rng = rand::thread_rng();
+/// let mut bytes = "Hello, random!".to_string().into_bytes();
+/// bytes.shuffle(&mut rng);
+/// let str = String::from_utf8(bytes).unwrap();
+/// println!("{}", str);
 /// ```
 /// Example output (non-deterministic):
 /// ```none
@@ -228,12 +226,10 @@ pub trait SliceRandom {
 /// ```
 /// use rand::seq::IteratorRandom;
 ///
-/// fn main() {
-///     let mut rng = rand::thread_rng();
-///     
-///     let faces = "😀😎😐😕😠😢";
-///     println!("I am {}!", faces.chars().choose(&mut rng).unwrap());
-/// }
+/// let mut rng = rand::thread_rng();
+///
+/// let faces = "😀😎😐😕😠😢";
+/// println!("I am {}!", faces.chars().choose(&mut rng).unwrap());
 /// ```
 /// Example output (non-deterministic):
 /// ```none

From cdc6a29cc0cdc8ff682afa38aab89205f32c15ef Mon Sep 17 00:00:00 2001
From: Vinzent Steinberg <Vinzent.Steinberg@gmail.com>
Date: Fri, 31 Jul 2020 17:41:37 +0200
Subject: [PATCH 2/3] Implement `IntoIterator` for `IndexVec`

This fixes a clippy warning and slightly improves ergonomic.

This is technically a breaking change, but it is unlikely to break code
in practice, since `IntoIterator` is in Rust's prelude.
---
 src/seq/index.rs | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/seq/index.rs b/src/seq/index.rs
index 92be0a33fd..8638b86bcf 100644
--- a/src/seq/index.rs
+++ b/src/seq/index.rs
@@ -85,10 +85,15 @@ impl IndexVec {
             IndexVec::USize(ref v) => IndexVecIter::USize(v.iter()),
         }
     }
+}
+
+impl IntoIterator for IndexVec {
+    type Item = usize;
+    type IntoIter = IndexVecIntoIter;
 
     /// Convert into an iterator over the indices as a sequence of `usize` values
     #[inline]
-    pub fn into_iter(self) -> IndexVecIntoIter {
+    fn into_iter(self) -> IndexVecIntoIter {
         match self {
             IndexVec::U32(v) => IndexVecIntoIter::U32(v.into_iter()),
             IndexVec::USize(v) => IndexVecIntoIter::USize(v.into_iter()),

From 1f85984e02ebda2f8197dc703ed44da2d6e5bad4 Mon Sep 17 00:00:00 2001
From: Vinzent Steinberg <Vinzent.Steinberg@gmail.com>
Date: Fri, 31 Jul 2020 18:16:17 +0200
Subject: [PATCH 3/3] Fix tests with `serde1` feature

---
 src/rngs/mock.rs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/rngs/mock.rs b/src/rngs/mock.rs
index df1221bb7c..a1745a490d 100644
--- a/src/rngs/mock.rs
+++ b/src/rngs/mock.rs
@@ -75,6 +75,8 @@ mod tests {
     #[test]
     #[cfg(feature = "serde1")]
     fn test_serialization_step_rng() {
+        use super::StepRng;
+
         let some_rng = StepRng::new(42, 7);
         let de_some_rng: StepRng =
             bincode::deserialize(&bincode::serialize(&some_rng).unwrap()).unwrap();