cargo features are [supposed to be additive](https://doc.rust-lang.org/cargo/reference/features.html?highlight=additive#feature-unification), but `rustc-hash` isn't. Consider the case where: 1. Crate `a` depends on `rustdoc-types` with default features - Crate `a` relies on the HashMap using the default hasher. 3. Crate `b` depends on `rustdoc-types` with `rustc-hash` feature. 4. Crate `c` depends on `a` and `b` - Cargo does feature unification, and builds `a` agains `rustdoc-types` with `rustc-hash` enabled. - `a` fails to compile. Potential fixes 1. Ignore this, and hope it doesn't effect anyone 2. Implement our own `BuildHasher` type that doesn't expose the underlying hashing algo, so changing it is additive 3. Drop the `rustc-hash` feature, and always use it. 3.1. Drop the `rustc-hash` feature, and never use it. 5. Make `Crate` generic over the hasher type. I think it's fine to go with 1 for now, but I'm filling this issue so I don't forget this. Originally reported by @noratrieb [on fediverse](https://hachyderm.io/@noratrieb/113340621459100637) Caused by #42
Activity