From c42cdff3d2ed2e30add09dd0d602181b6f83534d Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Thu, 17 Jun 2021 11:28:44 +0300
Subject: internal: minimize minicore

We want to keep minicore small, so let's split out iterator adapters and
sources into a separate `iterators` region, and use them only when
needed.
---
 .../src/handlers/replace_for_loop_with_for_each.rs | 78 +++++++---------------
 1 file changed, 25 insertions(+), 53 deletions(-)

(limited to 'crates/ide_assists')

diff --git a/crates/ide_assists/src/handlers/replace_for_loop_with_for_each.rs b/crates/ide_assists/src/handlers/replace_for_loop_with_for_each.rs
index 8e571723d..5f2aa016f 100644
--- a/crates/ide_assists/src/handlers/replace_for_loop_with_for_each.rs
+++ b/crates/ide_assists/src/handlers/replace_for_loop_with_for_each.rs
@@ -186,18 +186,14 @@ fn main() {
     fn test_for_borrowed() {
         check_assist(
             replace_for_loop_with_for_each,
-            r"
-//- minicore: iterator
-struct Iter;
-impl Iterator for Iter {
-    type Item = usize;
-    fn next(&mut self) -> Option<Self::Item> { None }
-}
+            r#"
+//- minicore: iterators
+use core::iter::{Repeat, repeat};
 
 struct S;
 impl S {
-    fn iter(&self) -> Iter { Iter }
-    fn iter_mut(&mut self) -> Iter { Iter }
+    fn iter(&self) -> Repeat<i32> { repeat(92) }
+    fn iter_mut(&mut self) -> Repeat<i32> { repeat(92) }
 }
 
 fn main() {
@@ -206,18 +202,14 @@ fn main() {
         let a = v * 2;
     }
 }
-",
-            r"
-struct Iter;
-impl Iterator for Iter {
-    type Item = usize;
-    fn next(&mut self) -> Option<Self::Item> { None }
-}
+"#,
+            r#"
+use core::iter::{Repeat, repeat};
 
 struct S;
 impl S {
-    fn iter(&self) -> Iter { Iter }
-    fn iter_mut(&mut self) -> Iter { Iter }
+    fn iter(&self) -> Repeat<i32> { repeat(92) }
+    fn iter_mut(&mut self) -> Repeat<i32> { repeat(92) }
 }
 
 fn main() {
@@ -226,7 +218,7 @@ fn main() {
         let a = v * 2;
     });
 }
-",
+"#,
         )
     }
 
@@ -259,18 +251,14 @@ fn main() {
     fn test_for_borrowed_mut() {
         check_assist(
             replace_for_loop_with_for_each,
-            r"
-//- minicore: iterator
-struct Iter;
-impl Iterator for Iter {
-    type Item = usize;
-    fn next(&mut self) -> Option<Self::Item> { None }
-}
+            r#"
+//- minicore: iterators
+use core::iter::{Repeat, repeat};
 
 struct S;
 impl S {
-    fn iter(&self) -> Iter { Iter }
-    fn iter_mut(&mut self) -> Iter { Iter }
+    fn iter(&self) -> Repeat<i32> { repeat(92) }
+    fn iter_mut(&mut self) -> Repeat<i32> { repeat(92) }
 }
 
 fn main() {
@@ -279,18 +267,14 @@ fn main() {
         let a = v * 2;
     }
 }
-",
-            r"
-struct Iter;
-impl Iterator for Iter {
-    type Item = usize;
-    fn next(&mut self) -> Option<Self::Item> { None }
-}
+"#,
+            r#"
+use core::iter::{Repeat, repeat};
 
 struct S;
 impl S {
-    fn iter(&self) -> Iter { Iter }
-    fn iter_mut(&mut self) -> Iter { Iter }
+    fn iter(&self) -> Repeat<i32> { repeat(92) }
+    fn iter_mut(&mut self) -> Repeat<i32> { repeat(92) }
 }
 
 fn main() {
@@ -299,7 +283,7 @@ fn main() {
         let a = v * 2;
     });
 }
-",
+"#,
         )
     }
 
@@ -332,28 +316,16 @@ fn main() {
         check_assist(
             replace_for_loop_with_for_each,
             r#"
-//- minicore: iterator
-struct Iter;
-impl Iterator for Iter {
-    type Item = usize;
-    fn next(&mut self) -> Option<Self::Item> { None }
-}
-
+//- minicore: iterators
 fn main() {
-    for$0 a in Iter.take(1) {
+    for$0 a in core::iter::repeat(92).take(1) {
         println!("{}", a);
     }
 }
 "#,
             r#"
-struct Iter;
-impl Iterator for Iter {
-    type Item = usize;
-    fn next(&mut self) -> Option<Self::Item> { None }
-}
-
 fn main() {
-    Iter.take(1).for_each(|a| {
+    core::iter::repeat(92).take(1).for_each(|a| {
         println!("{}", a);
     });
 }
-- 
cgit v1.2.3