To be clear, you can use star dependencies locally, but pushing a new crate to `crates.io` will reject crates that have star dependencies. So in some senses this is still accurate, but it's missing the crates.io interaction.
This means I don't understand how you got your error. For example:
> cat .\Cargo.toml
[package]
name = "star"
version = "0.1.0"
authors = ["steveklabnik <steve@steveklabnik.com>"]
[dependencies]
semver="*"
> cargo build
Updating registry `https://github.com/rust-lang/crates.io-index`
Compiling semver-parser v0.7.0
Compiling semver v0.6.0
Compiling star v0.1.0 (file:///C:/Users/steve/tmp/star)
Finished dev [unoptimized + debuginfo] target(s) in 5.24 secs
The Cargo problem turns out to be a known incompatibility between the version of Cargo which ships with Ubuntu 16.04 LTS and later version of Rust.[1][2][3] "Old versions of cargo cannot install any version of a crate that has a version with a prelease string". It's not the user's .toml file that's the problem; it's an internal dependency within the crate that's breaking Cargo.
It's necessary to run Rust's version of Cargo, not Ubuntu's, when using Rust. Due to a path problem, I was using Ubuntu's older versions of Rust and Cargo, but with libraries from the new Rust installation.
This means I don't understand how you got your error. For example:
I've filed https://github.com/rust-lang/cargo/issues/3971I'm also not sure how you got your `join` error,
seems to compile just fine for me. Hard to tell without seeing your other code, I guess...