How about changing [lib] to [[lib]], to allow multiple library in a crate?

You got the crux of it in your list. For me, mapping extern crate declarations directly (in most cases) to a crate in crates.io won the day.

If crates.io crates had multiple Rust crates, we would have to (1) educate people about the semantic gap, and (2) provide a way to do the mapping in the Cargo.toml, which every user of the crate would need to do.

The alternative, having package authors break up their libraries into multiple crates.io crates, which we made very ergonomic by supporting multiple crates in a single git repo, seems like a small price to pay to maintain the simplicity of extern crate mapping.

8 Likes