See https://github.com/rust-lang/cargo/pull/5461 for the **reverted** attempt at that. Basically, `cargo metadata` prints not enough information about **resolved** dependencies. The bits of info missing from `cargo metadata` are: * Which dependency applies to which target: currently we can't distinguish between normal and dev deps #3984, #4631 * What are the platform restrictions for a dep? #4632 * Which name are you supposed to put in `extern carate name`? This covers `-` to `_` translation, as well as Cargo.toml level renaming.