From c42cdff3d2ed2e30add09dd0d602181b6f83534d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov 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 { 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 { repeat(92) } + fn iter_mut(&mut self) -> Repeat { 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 { 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 { repeat(92) } + fn iter_mut(&mut self) -> Repeat { 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 { 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 { repeat(92) } + fn iter_mut(&mut self) -> Repeat { 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 { 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 { repeat(92) } + fn iter_mut(&mut self) -> Repeat { 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 { 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 { None } -} - fn main() { - Iter.take(1).for_each(|a| { + core::iter::repeat(92).take(1).for_each(|a| { println!("{}", a); }); } -- cgit v1.2.3