Rust lacunae
Rust lacunae
Posted Jun 24, 2021 15:24 UTC (Thu) by nye (subscriber, #51576)In reply to: Rust lacunae by khim
Parent article: Rewriting the GNU Coreutils in Rust
> size > -1
is always false if size is unsigned with no warnings
$ clang++ -Weverything /tmp/test.cpp /tmp/test.cpp:4:14: warning: result of comparison 'unsigned int' > 4294967295 is always false [-Wtautological-type-limit-compare] if (size > -1) { ~~~~ ^ ~~ /tmp/test.cpp:4:16: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] if (size > -1) { ~ ^~Even if you don't like using
-Weverything
because you don't want to opt in to newly added warnings, I do think that -Wsign-conversion
is something that should always be turned on for code under active development. If you have substantial legacy codebase then you will doubtless need to add a lot of explicit casts to silence false positives, but, well, that's what you asked for.