rust-lang / rust-lang/rust-clippy

Forbid Not operator (`!`)

Open
#8,725 2 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-lint L-restriction
Dominant language
Rust
Stars
13.5k
Forks
2.2k
Avg merge
2d 10h
Merged PRs (30d)
32

Description

What it does

Forbid the usage of not operator (!) in if $expr, while $expr and assert!($expr).
Use .not() instead. (std::ops::Not)

Lint Name

not_operator_used

Category

style
restriction

Advantage

.not() is more conspicuous than ! and looks continuous.

Drawbacks

No response

Example
assert!(!expr);

if !expr {
   // ...
}

while !expr {
   // ...
}

Could be written as:

use std::ops::Not;

assert!(expr.not());

if expr.not() {
   // ...
}

while expr.not() {
   // ...
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file or test path is named in the issue. Start by locating the existing Rust Clippy lint entry points and tests, then use the three examples as acceptance cases for not_operator_used: the targeted ! forms should be diagnosed, while the .not() forms should remain valid.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
devtools
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.