From 4133f1f424c6a9da71cab65dc9541e6d941ec603 Mon Sep 17 00:00:00 2001
From: Pascal Kuthe <dspom@protonmail.com>
Date: Fri, 23 Sep 2022 08:58:00 +0200
Subject: [PATCH] Document MSRV policy (#3913)

---
 .github/workflows/msrv-rust-toolchain.toml | 2 +-
 Cargo.lock                                 | 7 -------
 docs/CONTRIBUTING.md                       | 6 ++++++
 helix-term/Cargo.toml                      | 3 ---
 helix-term/src/ui/picker.rs                | 4 ----
 5 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/.github/workflows/msrv-rust-toolchain.toml b/.github/workflows/msrv-rust-toolchain.toml
index 7a3ec50b..b169d31e 100644
--- a/.github/workflows/msrv-rust-toolchain.toml
+++ b/.github/workflows/msrv-rust-toolchain.toml
@@ -1,3 +1,3 @@
 [toolchain]
-channel = "1.59.0"
+channel = "1.61.0"
 components = ["rustfmt", "rust-src"]
diff --git a/Cargo.lock b/Cargo.lock
index a26c92e4..cc9e69b4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -485,7 +485,6 @@ dependencies = [
  "log",
  "once_cell",
  "pulldown-cmark",
- "retain_mut",
  "serde",
  "serde_json",
  "signal-hook",
@@ -884,12 +883,6 @@ dependencies = [
  "winapi",
 ]
 
-[[package]]
-name = "retain_mut"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0"
-
 [[package]]
 name = "ropey"
 version = "1.5.0"
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index e7b39b06..353cb4fd 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -37,6 +37,12 @@ contributors are strongly encouraged to write integration tests for their code.
 Existing tests can be used as examples. Helpers can be found in
 [helpers.rs][helpers.rs]
 
+## Minimum Stable Rust Version (MSRV) Policy
+
+Helix follows the MSRV of Firefox.
+The current MSRV and future changes to the MSRV are listed in the [Firefox documentation].
+
+[Firefox documentation]: https://firefox-source-docs.mozilla.org/writing-rust-code/update-policy.html
 [good-first-issue]: https://github.com/helix-editor/helix/labels/E-easy
 [log-file]: https://github.com/helix-editor/helix/wiki/FAQ#access-the-log-file
 [architecture.md]: ./architecture.md
diff --git a/helix-term/Cargo.toml b/helix-term/Cargo.toml
index 0ebcb24f..b36063e4 100644
--- a/helix-term/Cargo.toml
+++ b/helix-term/Cargo.toml
@@ -67,9 +67,6 @@ serde = { version = "1.0", features = ["derive"] }
 grep-regex = "0.1.10"
 grep-searcher = "0.1.10"
 
-# Remove once retain_mut lands in stable rust
-retain_mut = "0.1.7"
-
 [target.'cfg(not(windows))'.dependencies]  # https://github.com/vorner/signal-hook/issues/100
 signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] }
 
diff --git a/helix-term/src/ui/picker.rs b/helix-term/src/ui/picker.rs
index 24d3b288..d125a6aa 100644
--- a/helix-term/src/ui/picker.rs
+++ b/helix-term/src/ui/picker.rs
@@ -365,10 +365,6 @@ impl<T: Item> Picker<T> {
                     .map(|(index, _option)| (index, 0)),
             );
         } else if pattern.starts_with(&self.previous_pattern) {
-            // TODO: remove when retain_mut is in stable rust
-            #[allow(unused_imports, deprecated)]
-            use retain_mut::RetainMut;
-
             // optimization: if the pattern is a more specific version of the previous one
             // then we can score the filtered set.
             #[allow(unstable_name_collisions)]