mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Add ui test for map_unit_fn
lint in closure case
This commit is contained in:
parent
a87443a859
commit
b93d54556f
@ -8,4 +8,13 @@ fn main() {
|
|||||||
let mut x: Vec<Vec<u8>> = vec![vec![0, 2, 1], vec![5, 4, 3]];
|
let mut x: Vec<Vec<u8>> = vec![vec![0, 2, 1], vec![5, 4, 3]];
|
||||||
x.iter_mut().map(foo);
|
x.iter_mut().map(foo);
|
||||||
//~^ ERROR `Iterator::map` call that discard the iterator's values
|
//~^ ERROR `Iterator::map` call that discard the iterator's values
|
||||||
|
x.iter_mut().map(|items| {
|
||||||
|
//~^ ERROR `Iterator::map` call that discard the iterator's values
|
||||||
|
items.sort();
|
||||||
|
});
|
||||||
|
let f = |items: &mut Vec<u8>| {
|
||||||
|
items.sort();
|
||||||
|
};
|
||||||
|
x.iter_mut().map(f);
|
||||||
|
//~^ ERROR `Iterator::map` call that discard the iterator's values
|
||||||
}
|
}
|
||||||
|
@ -21,5 +21,46 @@ help: you might have meant to use `Iterator::for_each`
|
|||||||
LL | x.iter_mut().for_each(foo);
|
LL | x.iter_mut().for_each(foo);
|
||||||
| ~~~~~~~~
|
| ~~~~~~~~
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: `Iterator::map` call that discard the iterator's values
|
||||||
|
--> $DIR/lint_map_unit_fn.rs:11:18
|
||||||
|
|
|
||||||
|
LL | x.iter_mut().map(|items| {
|
||||||
|
| ^ -------
|
||||||
|
| | |
|
||||||
|
| ____________________|___this function returns `()`, which is likely not what you wanted
|
||||||
|
| | __________________|
|
||||||
|
| | |
|
||||||
|
LL | | |
|
||||||
|
LL | | | items.sort();
|
||||||
|
LL | | | });
|
||||||
|
| | | -^ after this call to map, the resulting iterator is `impl Iterator<Item = ()>`, which means the only information carried by the iterator is the number of items
|
||||||
|
| | |_____||
|
||||||
|
| |_______|
|
||||||
|
| called `Iterator::map` with callable that returns `()`
|
||||||
|
|
|
||||||
|
= note: `Iterator::map`, like many of the methods on `Iterator`, gets executed lazily, meaning that its effects won't be visible until it is iterated
|
||||||
|
help: you might have meant to use `Iterator::for_each`
|
||||||
|
|
|
||||||
|
LL | x.iter_mut().for_each(|items| {
|
||||||
|
| ~~~~~~~~
|
||||||
|
|
||||||
|
error: `Iterator::map` call that discard the iterator's values
|
||||||
|
--> $DIR/lint_map_unit_fn.rs:18:18
|
||||||
|
|
|
||||||
|
LL | let f = |items: &mut Vec<u8>| {
|
||||||
|
| --------------------- this function returns `()`, which is likely not what you wanted
|
||||||
|
...
|
||||||
|
LL | x.iter_mut().map(f);
|
||||||
|
| ^^^^-^
|
||||||
|
| | |
|
||||||
|
| | called `Iterator::map` with callable that returns `()`
|
||||||
|
| after this call to map, the resulting iterator is `impl Iterator<Item = ()>`, which means the only information carried by the iterator is the number of items
|
||||||
|
|
|
||||||
|
= note: `Iterator::map`, like many of the methods on `Iterator`, gets executed lazily, meaning that its effects won't be visible until it is iterated
|
||||||
|
help: you might have meant to use `Iterator::for_each`
|
||||||
|
|
|
||||||
|
LL | x.iter_mut().for_each(f);
|
||||||
|
| ~~~~~~~~
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user