Lint flatten() under lines_filter_map_ok
This commit is contained in:
parent
902c79c654
commit
39eded7b05
4 changed files with 71 additions and 34 deletions
|
|
@ -10,11 +10,17 @@ fn main() -> io::Result<()> {
|
|||
// Lint
|
||||
let f = std::fs::File::open("/")?;
|
||||
BufReader::new(f).lines().map_while(Result::ok).for_each(|_| ());
|
||||
// Lint
|
||||
let f = std::fs::File::open("/")?;
|
||||
BufReader::new(f).lines().map_while(Result::ok).for_each(|_| ());
|
||||
|
||||
let s = "foo\nbar\nbaz\n";
|
||||
// Lint
|
||||
io::stdin().lines().map_while(Result::ok).for_each(|_| ());
|
||||
// Lint
|
||||
io::stdin().lines().map_while(Result::ok).for_each(|_| ());
|
||||
// Lint
|
||||
io::stdin().lines().map_while(Result::ok).for_each(|_| ());
|
||||
// Do not lint (not a `Lines` iterator)
|
||||
io::stdin()
|
||||
.lines()
|
||||
|
|
|
|||
|
|
@ -10,11 +10,17 @@ fn main() -> io::Result<()> {
|
|||
// Lint
|
||||
let f = std::fs::File::open("/")?;
|
||||
BufReader::new(f).lines().flat_map(Result::ok).for_each(|_| ());
|
||||
// Lint
|
||||
let f = std::fs::File::open("/")?;
|
||||
BufReader::new(f).lines().flatten().for_each(|_| ());
|
||||
|
||||
let s = "foo\nbar\nbaz\n";
|
||||
// Lint
|
||||
io::stdin().lines().filter_map(Result::ok).for_each(|_| ());
|
||||
// Lint
|
||||
io::stdin().lines().filter_map(|x| x.ok()).for_each(|_| ());
|
||||
// Lint
|
||||
io::stdin().lines().flatten().for_each(|_| ());
|
||||
// Do not lint (not a `Lines` iterator)
|
||||
io::stdin()
|
||||
.lines()
|
||||
|
|
|
|||
|
|
@ -24,29 +24,53 @@ note: this expression returning a `std::io::Lines` may produce an infinite numbe
|
|||
LL | BufReader::new(f).lines().flat_map(Result::ok).for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `filter_map()` will run forever if the iterator repeatedly produces an `Err`
|
||||
--> $DIR/lines_filter_map_ok.rs:15:25
|
||||
error: `flatten()` will run forever if the iterator repeatedly produces an `Err`
|
||||
--> $DIR/lines_filter_map_ok.rs:15:31
|
||||
|
|
||||
LL | io::stdin().lines().filter_map(Result::ok).for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `map_while(Result::ok)`
|
||||
LL | BufReader::new(f).lines().flatten().for_each(|_| ());
|
||||
| ^^^^^^^^^ help: replace with: `map_while(Result::ok)`
|
||||
|
|
||||
note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error
|
||||
--> $DIR/lines_filter_map_ok.rs:15:5
|
||||
|
|
||||
LL | BufReader::new(f).lines().flatten().for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `filter_map()` will run forever if the iterator repeatedly produces an `Err`
|
||||
--> $DIR/lines_filter_map_ok.rs:19:25
|
||||
|
|
||||
LL | io::stdin().lines().filter_map(Result::ok).for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `map_while(Result::ok)`
|
||||
|
|
||||
note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error
|
||||
--> $DIR/lines_filter_map_ok.rs:19:5
|
||||
|
|
||||
LL | io::stdin().lines().filter_map(Result::ok).for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `filter_map()` will run forever if the iterator repeatedly produces an `Err`
|
||||
--> $DIR/lines_filter_map_ok.rs:17:25
|
||||
--> $DIR/lines_filter_map_ok.rs:21:25
|
||||
|
|
||||
LL | io::stdin().lines().filter_map(|x| x.ok()).for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `map_while(Result::ok)`
|
||||
|
|
||||
note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error
|
||||
--> $DIR/lines_filter_map_ok.rs:17:5
|
||||
--> $DIR/lines_filter_map_ok.rs:21:5
|
||||
|
|
||||
LL | io::stdin().lines().filter_map(|x| x.ok()).for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
error: `flatten()` will run forever if the iterator repeatedly produces an `Err`
|
||||
--> $DIR/lines_filter_map_ok.rs:23:25
|
||||
|
|
||||
LL | io::stdin().lines().flatten().for_each(|_| ());
|
||||
| ^^^^^^^^^ help: replace with: `map_while(Result::ok)`
|
||||
|
|
||||
note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error
|
||||
--> $DIR/lines_filter_map_ok.rs:23:5
|
||||
|
|
||||
LL | io::stdin().lines().flatten().for_each(|_| ());
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue