mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-09 08:27:38 +00:00
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.
This commit is contained in:
parent
9b3aa591cd
commit
c42cdff3d2
@ -818,7 +818,7 @@ fn main() {
|
||||
fn shorten_iterators_in_associated_params() {
|
||||
check_types(
|
||||
r#"
|
||||
//- minicore: iterator
|
||||
//- minicore: iterators
|
||||
use core::iter;
|
||||
|
||||
pub struct SomeIter<T> {}
|
||||
@ -1126,7 +1126,7 @@ fn main() {
|
||||
fn shorten_iterator_hints() {
|
||||
check_types(
|
||||
r#"
|
||||
//- minicore: iterator
|
||||
//- minicore: iterators
|
||||
use core::iter;
|
||||
|
||||
struct MyIter;
|
||||
@ -1357,7 +1357,7 @@ fn main() {
|
||||
max_length: None,
|
||||
},
|
||||
r#"
|
||||
//- minicore: iterator
|
||||
//- minicore: iterators
|
||||
use core::iter;
|
||||
|
||||
struct MyIter;
|
||||
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
@ -21,6 +21,7 @@
|
||||
//! option:
|
||||
//! result:
|
||||
//! iterator: option
|
||||
//! iterators: iterator
|
||||
|
||||
pub mod marker {
|
||||
// region:sized
|
||||
@ -209,6 +210,7 @@ pub mod task {
|
||||
|
||||
// region:iterator
|
||||
pub mod iter {
|
||||
// region:iterators
|
||||
mod adapters {
|
||||
pub struct Take<I> {
|
||||
iter: I,
|
||||
@ -249,6 +251,7 @@ pub mod iter {
|
||||
pub use self::repeat::{repeat, Repeat};
|
||||
}
|
||||
pub use self::sources::{repeat, Repeat};
|
||||
// endregion:iterators
|
||||
|
||||
mod traits {
|
||||
mod iterator {
|
||||
@ -261,15 +264,17 @@ pub mod iter {
|
||||
fn nth(&mut self, n: usize) -> Option<Self::Item> {
|
||||
loop {}
|
||||
}
|
||||
fn take(self, n: usize) -> crate::iter::Take<Self> {
|
||||
loop {}
|
||||
}
|
||||
fn by_ref(&mut self) -> &mut Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self
|
||||
}
|
||||
// region:iterators
|
||||
fn take(self, n: usize) -> crate::iter::Take<Self> {
|
||||
loop {}
|
||||
}
|
||||
// endregion:iterators
|
||||
}
|
||||
impl<I: Iterator + ?Sized> Iterator for &mut I {
|
||||
type Item = I::Item;
|
||||
|
Loading…
Reference in New Issue
Block a user