-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Clippy is unhappy with this perfectly reasonable enum:
pub enum Error {
RecvError(udp::RecvError),
SendError(udp::SendError),
BindError(udp::BindError),
AddressFamilyUnavailable,
}
The lint enum_variant_names
fires because RecvError
, SendError
and BindError
variants are named like the type. That's the fundamental point of the lint, but it fails to consider information that'd be available to the linter: That that substring is also part of the encapsulated type.
I'm not well enough familiar with clippy to come up with code, but I'd like to suggest the following addition to the lint's rules:
If the variant contains a single item, and any component of the contained item's path is identical to the variant's name, then the lint does not trigger.
By including the full path, it would even protect a hypothetical enum Cbor { MiniCbor(minicbor::Something), SerdeCbor(serde_cbor::Something) }
; I can't tell how much going-out-of-the-way it would need to catch SerdeCbor
to be justified by serde_cbor
, so maybe a simpler version that just doesn't trigger on the real example above suffices.