refactor(Errors): refactors how errors are created for deduplication
This should **finally** fix all the cases for @elszben since there's now only a single way to determine what goes in the usage string...not 20 😄Closes#277
Avoid suggesting star dependencies.
A `*` version constraint makes it hard/impossible to release a breaking
change (e.g. clap 2.0) without causing people's code to break. `cargo
update` with a `*` dependency will happily move from (say) 1.4 to 2.0,
even though semver says these may be a breaking change. Using a more
precise dependency constraint gives the crate author more flexibility in
making breaking changes, and makes users of the crate happier if/when
they do happen.
https://github.com/rust-lang/rfcs/pull/1241 contains a bit more
discussion about this.
A `*` version constraint makes it hard/impossible to release a breaking
change (e.g. clap 2.0) without causing people's code to break. `cargo
update` with a `*` dependency will happily move from (say) 1.4 to 2.0,
even though semver says these may be a breaking change. Using a more
precise dependency constraint gives the crate author more flexibility in
making breaking changes, and makes users of the crate happier if/when
they do happen.
https://github.com/rust-lang/rfcs/pull/1241 contains a bit more
discussion about this.
Refactor
* Removes trailing whitespace
* Moves all the `bool` fields of `App` into a bitflags field, which also makes it way easier to add new settings and de-bloats the `App` struct a little
* Does the same for the `*Builder` structs
* Notably does **not** use bitfileds for the `Arg` struct...but mainly because it appears some people are using those fields directly...TBD if we'll change that or not.