Auto merge of #8989 - kyoto7250:default_iter_empty, r=Alexendoo

feat(lint): add default_iter_empty

close #8915

This PR adds `default_iter_empty` lint.

This lint checks `std::iter::Empty::default()` and replace with `std::iter::empty()`.

Thank you in advance.

---

changelog: add `default_instead_of_iter_empty` lint.
This commit is contained in:
bors 2022-06-17 21:06:09 +00:00
commit e933bb6bc3
10 changed files with 139 additions and 0 deletions

View file

@ -0,0 +1,21 @@
// run-rustfix
#![warn(clippy::default_instead_of_iter_empty)]
#![allow(dead_code)]
use std::collections::HashMap;
#[derive(Default)]
struct Iter {
iter: std::iter::Empty<usize>,
}
fn main() {
// Do lint.
let _ = std::iter::empty::<usize>();
let _ = std::iter::empty::<HashMap<usize, usize>>();
let _foo: std::iter::Empty<usize> = std::iter::empty();
// Do not lint.
let _ = Vec::<usize>::default();
let _ = String::default();
let _ = Iter::default();
}

View file

@ -0,0 +1,21 @@
// run-rustfix
#![warn(clippy::default_instead_of_iter_empty)]
#![allow(dead_code)]
use std::collections::HashMap;
#[derive(Default)]
struct Iter {
iter: std::iter::Empty<usize>,
}
fn main() {
// Do lint.
let _ = std::iter::Empty::<usize>::default();
let _ = std::iter::Empty::<HashMap<usize, usize>>::default();
let _foo: std::iter::Empty<usize> = std::iter::Empty::default();
// Do not lint.
let _ = Vec::<usize>::default();
let _ = String::default();
let _ = Iter::default();
}

View file

@ -0,0 +1,22 @@
error: `std::iter::empty()` is the more idiomatic way
--> $DIR/default_instead_of_iter_empty.rs:13:13
|
LL | let _ = std::iter::Empty::<usize>::default();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::iter::empty::<usize>()`
|
= note: `-D clippy::default-instead-of-iter-empty` implied by `-D warnings`
error: `std::iter::empty()` is the more idiomatic way
--> $DIR/default_instead_of_iter_empty.rs:14:13
|
LL | let _ = std::iter::Empty::<HashMap<usize, usize>>::default();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::iter::empty::<HashMap<usize, usize>>()`
error: `std::iter::empty()` is the more idiomatic way
--> $DIR/default_instead_of_iter_empty.rs:15:41
|
LL | let _foo: std::iter::Empty<usize> = std::iter::Empty::default();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::iter::empty()`
error: aborting due to 3 previous errors