Description
First of all: Thanks for all the work that goes into clippy - I think there are some really good things for newcomers which actively prevent bugs and help enforce a more common style.
I unfortunately have to admit that lately dealing with clippy got a lot more of a chore than a pleasure, and a major blocker to upgrading to new Rust versions. Whenever a new compiler is released, a couple of packages that I'm either actively maintaining or utilizing start to break due to new lints being added.
Fixing that requires spending additional effort when updating the compiler for all those dependencies. That effort would often be much better invested elsewhere than fixing nitpicks and is usually not accounted for on product roadmaps.
For some examples:
- With one of the recent versions (1.51 or 1.52?)
inconsistent_struct_constructor
was added and later removed:inconsistent_struct_constructor
doesn’t justify its existence #7192. That one didn't just add noise - it even lead to breaking a service I know of due to someone reordering the field order of aextern "C" struct
and C interop leading to undefined behavior in rust. - With 1.53 I now spent 20 minutes making
https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison
happy in just one package (Fix Rust 1.53 clippy issues quinn-rs/quinn#1147) - and a lot more will come. This lint definitely does not help improving any bugs - it's also just a style nitpick and even leads to inconsistent style as seen in this PR.
Now of course we could back to "if you are not happy, just disable clippy". That's an option, but I don't think its the right path to take since projects doing that would also lose the benefits of clippy.
I instead would like to encourage the time to think twice on whether something is actually really worth a warning
or should be rather in the pedantic
category - and to strictly enable new lints for projects which have opted into it by setting a clippy MSRV to an appropriate value.
Sorry if this comes a bit over as rant - it should not be! My main goal is to highlight that there is a huge cost of adding new lints outside of the clippy package which might not be seen when those are added. And I want to highlight that cost a bit more from a "consumer" point of view.