Suppose I have written a tool called foo. I'm going to call it foo. The name is non-negotiable (maybe I really love it or it has extensive internal use).
Now I want to publish it on crates.io so other Rust users can easily cargo install foo. But alas! Somebody already has published a crate there. It's long abandoned or maybe squatted so I'm not concerned about actual confusion between my foo and their foo, but it means I can't publish it.
Is there any way around this? Can I give my crate a "real name" and a "crates.io name"? Then I could call it foo-timmmm or something and cargo install foo-timmmm would give a foo binary.
The name used on crates.io is the name of the package specified in Cargo.toml. The name of a library crate and of binary crates other than the default main.rs can be configured separately using the name field of the target configuration in Cargo.toml.
You could have your package name set to something unambiguous, while providing a binary target named whatever you want. That should require very few changes to your current setup.