Something does seem a little off about this, though. Ideally for this `Debug` case there would be an annotation that says "compile this lazily, don't inline". Maybe there doesn't even need to be a new annotation, just `#[inline] #[cold]`. Which looks pretty weird, but might work already.
My idea above is roughly equivalent to the "zero-config" strategy you mention.
It's kinda crazy that if a direct dependency doesn't use some feature from a transitive dependency and the direct dependency forgets to disable it or expose a way to disable it you're still stuck with it.
Putting it another way that's even more controversial, because I do genuinely believe it and I think we need to radically change how we think about this: I don't think the Rust compiler is slow. I think that it just compiles too much code, and if we solved that, we'd find that it's fast enough in practice that most people would stop complaining about compile times.