diff options
| author | Christoph Schlosser <christoph@linux.com> | 2021-11-26 22:32:53 +0100 |
|---|---|---|
| committer | Christoph Schlosser <christoph@linux.com> | 2021-11-26 22:35:28 +0100 |
| commit | a138a003bb31cefbdb4ac8508efe6de64aa9da3f (patch) | |
| tree | fec1274a638721609ffca3ea6a8104eeb2c8212f /README.md | |
| download | nicht-master.tar.gz | |
Already quite stable
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..bd60843 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# Nicht + +A more natural way to use `not`. + +> Might be easier to read in a voice that doesn't sound like Borat + +## Motivation + +Boolean conditions sometimes require mental gymnastics from the reader especially on more complicated expressions which may lead to [subtle bugs](https://arstechnica.com/gadgets/2021/07/google-pushed-a-one-character-typo-to-production-bricking-chrome-os-devices/). + +Some languages have a `not` keyword available to reduce this kind of bugs especially with the sometimes hard to see single `!` negatiting whole expressions. + +Unfortunately this is not the case in rust. + +Instead the `std::ops::Not` can only be applied to the end of an expression making it hard to read again. + +## Usage + +This is the `std` way of using `not`: + +```rust +use std::ops::Not; + +if foo.some_condition().not() { + // etc. +} +``` + +With this crate you can achieve the more natural way of reading code like `if not some condition` is true. + +```rust +use nicht::not; + +if not(foo.some_condition()) { + // etc. +} +``` + +## Credit + +[By u/killercup](https://www.reddit.com/r/rust/comments/8u8o5o/comment/e1dtvu0/) + |