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.
docs: use links to examples instead of plain text
Replaced plain text `example/` and `example/xx_some_example.rs` by links to examples dir and appropriate examples.
Issue 262 - Result and Lossy options for invalid Unicode
This allows not `panic!`ing on invalid unicode characters, and the option of returning lossy results. This does **not** turn all results into an `OsStr` preserving invalid unicode.
If this helps with #262 we can merge (after review), otherwise we'll continue to discuss if there's a better way to handle this issue.
fix(ArgGroup) added asserts to help users to configure clap properly
Also I've added tests for this change
Now you will get
```
ArgGroup %Your_ArgGroup_Name% doesn't contain any args
```
instead of
```
thread '<main>' panicked at 'arithmetic operation overflowed'
```
And
```
ArgGroup %Your_ArgGroup_Name% can not have same name as arg inside it
```
instead of
```
thread '<main>' has overflowed its stack
```