mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-18 10:48:36 +00:00
b63a5b56d6
Lint `if _.[!]contains_key(&_) { .. } else { .. }` so long as one of the branches contains an insertion.
142 lines
3.5 KiB
Text
142 lines
3.5 KiB
Text
error: usage of `contains_key` followed by `insert` on a `HashMap`
|
|
--> $DIR/entry_with_else.rs:16:5
|
|
|
|
|
LL | / if !m.contains_key(&k) {
|
|
LL | | m.insert(k, v);
|
|
LL | | } else {
|
|
LL | | m.insert(k, v2);
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
= note: `-D clippy::map-entry` implied by `-D warnings`
|
|
help: try this
|
|
|
|
|
LL | match m.entry(k) {
|
|
LL | std::collections::hash_map::Entry::Vacant(e) => {
|
|
LL | e.insert(v);
|
|
LL | }
|
|
LL | std::collections::hash_map::Entry::Occupied(mut e) => {
|
|
LL | e.insert(v2);
|
|
...
|
|
|
|
error: usage of `contains_key` followed by `insert` on a `HashMap`
|
|
--> $DIR/entry_with_else.rs:22:5
|
|
|
|
|
LL | / if m.contains_key(&k) {
|
|
LL | | m.insert(k, v);
|
|
LL | | } else {
|
|
LL | | m.insert(k, v2);
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
help: try this
|
|
|
|
|
LL | match m.entry(k) {
|
|
LL | std::collections::hash_map::Entry::Occupied(mut e) => {
|
|
LL | e.insert(v);
|
|
LL | }
|
|
LL | std::collections::hash_map::Entry::Vacant(e) => {
|
|
LL | e.insert(v2);
|
|
...
|
|
|
|
error: usage of `contains_key` followed by `insert` on a `HashMap`
|
|
--> $DIR/entry_with_else.rs:28:5
|
|
|
|
|
LL | / if !m.contains_key(&k) {
|
|
LL | | m.insert(k, v);
|
|
LL | | } else {
|
|
LL | | foo();
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
help: try this
|
|
|
|
|
LL | if let std::collections::hash_map::Entry::Vacant(e) = m.entry(k) {
|
|
LL | e.insert(v);
|
|
LL | } else {
|
|
LL | foo();
|
|
LL | }
|
|
|
|
|
|
|
error: usage of `contains_key` followed by `insert` on a `HashMap`
|
|
--> $DIR/entry_with_else.rs:34:5
|
|
|
|
|
LL | / if !m.contains_key(&k) {
|
|
LL | | foo();
|
|
LL | | } else {
|
|
LL | | m.insert(k, v);
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
help: try this
|
|
|
|
|
LL | if let std::collections::hash_map::Entry::Occupied(mut e) = m.entry(k) {
|
|
LL | e.insert(v);
|
|
LL | } else {
|
|
LL | foo();
|
|
LL | }
|
|
|
|
|
|
|
error: usage of `contains_key` followed by `insert` on a `HashMap`
|
|
--> $DIR/entry_with_else.rs:40:5
|
|
|
|
|
LL | / if !m.contains_key(&k) {
|
|
LL | | m.insert(k, v);
|
|
LL | | } else {
|
|
LL | | m.insert(k, v2);
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
help: try this
|
|
|
|
|
LL | match m.entry(k) {
|
|
LL | std::collections::hash_map::Entry::Vacant(e) => {
|
|
LL | e.insert(v);
|
|
LL | }
|
|
LL | std::collections::hash_map::Entry::Occupied(mut e) => {
|
|
LL | e.insert(v2);
|
|
...
|
|
|
|
error: usage of `contains_key` followed by `insert` on a `HashMap`
|
|
--> $DIR/entry_with_else.rs:46:5
|
|
|
|
|
LL | / if m.contains_key(&k) {
|
|
LL | | if true { m.insert(k, v) } else { m.insert(k, v2) }
|
|
LL | | } else {
|
|
LL | | m.insert(k, v)
|
|
LL | | };
|
|
| |_____^
|
|
|
|
|
help: try this
|
|
|
|
|
LL | match m.entry(k) {
|
|
LL | std::collections::hash_map::Entry::Occupied(mut e) => {
|
|
LL | if true { Some(e.insert(v)) } else { Some(e.insert(v2)) }
|
|
LL | }
|
|
LL | std::collections::hash_map::Entry::Vacant(e) => {
|
|
LL | e.insert(v);
|
|
...
|
|
|
|
error: usage of `contains_key` followed by `insert` on a `HashMap`
|
|
--> $DIR/entry_with_else.rs:52:5
|
|
|
|
|
LL | / if m.contains_key(&k) {
|
|
LL | | foo();
|
|
LL | | m.insert(k, v)
|
|
LL | | } else {
|
|
LL | | None
|
|
LL | | };
|
|
| |_____^
|
|
|
|
|
help: try this
|
|
|
|
|
LL | if let std::collections::hash_map::Entry::Occupied(mut e) = m.entry(k) {
|
|
LL | foo();
|
|
LL | Some(e.insert(v))
|
|
LL | } else {
|
|
LL | None
|
|
LL | };
|
|
|
|
|
|
|
error: aborting due to 7 previous errors
|
|
|