From b5c38812e923581a31eb5d38ddb96d44afd6505d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Thu, 28 May 2020 14:45:44 +0900
Subject: [PATCH] address clippy warnings

---
 helix-core/src/lib.rs         |  3 +++
 helix-core/src/selection.rs   | 16 ++++++++++++----
 helix-core/src/state.rs       |  1 +
 helix-core/src/transaction.rs | 11 ++++-------
 4 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/helix-core/src/lib.rs b/helix-core/src/lib.rs
index 7b584401..e027f943 100644
--- a/helix-core/src/lib.rs
+++ b/helix-core/src/lib.rs
@@ -3,6 +3,9 @@ mod selection;
 mod state;
 mod transaction;
 
+pub use ropey::Rope;
+pub use tendril::StrTendril as Tendril;
+
 pub use buffer::Buffer;
 
 pub use selection::Range as SelectionRange;
diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs
index 03d5db0e..0b2cd5a3 100644
--- a/helix-core/src/selection.rs
+++ b/helix-core/src/selection.rs
@@ -30,12 +30,14 @@ impl Range {
 
     /// Start of the range.
     #[inline]
+    #[must_use]
     pub fn from(&self) -> usize {
         std::cmp::min(self.anchor, self.head)
     }
 
     /// End of the range.
     #[inline]
+    #[must_use]
     pub fn to(&self) -> usize {
         std::cmp::max(self.anchor, self.head)
     }
@@ -47,6 +49,7 @@ impl Range {
     }
 
     /// Check two ranges for overlap.
+    #[must_use]
     pub fn overlaps(&self, other: &Self) -> bool {
         // cursor overlap is checked differently
         if self.is_empty() {
@@ -59,6 +62,7 @@ impl Range {
     // TODO: map
 
     /// Extend the range to cover at least `from` `to`.
+    #[must_use]
     pub fn extend(&self, from: usize, to: usize) -> Self {
         if from <= self.anchor && to >= self.anchor {
             return Range {
@@ -90,12 +94,14 @@ pub struct Selection {
 impl Selection {
     // map
     // eq
+
+    #[must_use]
     pub fn primary(&self) -> Range {
         self.ranges[self.primary_index]
     }
 
     /// Ensure selection containing only the primary selection.
-    pub fn as_single(self) -> Self {
+    pub fn into_single(self) -> Self {
         if self.ranges.len() == 1 {
             self
         } else {
@@ -109,6 +115,7 @@ impl Selection {
     // add_range // push
     // replace_range
 
+    #[must_use]
     /// Constructs a selection holding a single range.
     pub fn single(anchor: usize, head: usize) -> Self {
         Self {
@@ -117,11 +124,12 @@ impl Selection {
         }
     }
 
+    #[must_use]
     pub fn new(ranges: SmallVec<[Range; 1]>, primary_index: usize) -> Self {
-        fn normalize(mut ranges: SmallVec<[Range; 1]>, primary_index: usize) -> Selection {
+        fn normalize(mut ranges: SmallVec<[Range; 1]>, mut primary_index: usize) -> Selection {
             let primary = ranges[primary_index];
-            ranges.sort_unstable_by_key(|range| range.from());
-            let mut primary_index = ranges.iter().position(|&range| range == primary).unwrap();
+            ranges.sort_unstable_by_key(Range::from);
+            primary_index = ranges.iter().position(|&range| range == primary).unwrap();
 
             let mut result: SmallVec<[Range; 1]> = SmallVec::new();
 
diff --git a/helix-core/src/state.rs b/helix-core/src/state.rs
index 81b8e108..b4a3f2f0 100644
--- a/helix-core/src/state.rs
+++ b/helix-core/src/state.rs
@@ -8,6 +8,7 @@ pub struct State {
 }
 
 impl State {
+    #[must_use]
     pub fn new(buffer: Buffer) -> Self {
         Self {
             buffer,
diff --git a/helix-core/src/transaction.rs b/helix-core/src/transaction.rs
index b9824bc2..60ccd7c6 100644
--- a/helix-core/src/transaction.rs
+++ b/helix-core/src/transaction.rs
@@ -14,10 +14,7 @@
 //     distance: usize,
 // }
 
-use crate::{Buffer, Selection};
-
-use ropey::Rope;
-use tendril::StrTendril as Tendril;
+use crate::{Buffer, Rope, Selection, Tendril};
 
 // TODO: divided into three different operations, I sort of like having just
 // Splice { extent, Option<text>, distance } better.
@@ -56,6 +53,7 @@ pub struct ChangeSet {
 }
 
 impl ChangeSet {
+    #[must_use]
     pub fn new(buf: &Buffer) -> Self {
         let len = buf.contents.len_chars();
         Self {
@@ -105,8 +103,7 @@ impl ChangeSet {
                     head_a = a;
                     head_b = changes_b.next();
                 }
-                (None, _) => return Err(()),
-                (_, None) => return Err(()),
+                (None, _) | (_, None) => return Err(()),
                 (Some(Retain(i)), Some(Retain(j))) => match i.cmp(&j) {
                     Ordering::Less => {
                         changes.push(Retain(i));
@@ -221,7 +218,7 @@ impl ChangeSet {
 
         let mut pos = 0;
 
-        for change in self.changes.iter() {
+        for change in &self.changes {
             use Change::*;
             match change {
                 Retain(n) => {