Features are a bit weird. In making of lib.rs I've noticed that there's an implicit feature for every optional dependency, but lots of crates don't support these implicit features, and instead expect users to use explicit feature flags.
So for lib.rs I've invented a rule that if an optional dependency is enabled by any explicit feature, then I don't show the implicit feature flag.
e.g. if there's:
serde = { optional = true }
[features]
foo = []
then I consider the crate to have two features: serde and foo. But if it has:
serde = { optional = true }
[features]
with_serialization = ["serde"]
then I only show with_serialization feature, and don't show the serde feature.