1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[]
= "usage-derive"
= "Derive macro that compiles a CLI definition into parse tables and a usage spec"
= "6.2.0"
= "2021"
= "1.91"
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
[]
= true
[]
= true
= true
[]
# No `heck`: one function's worth of use (`CasingStyle::apply`), and the only crate an adopter
# compiled here that is not `proc-macro2` / `quote` / `syn`. Its word boundaries are reproduced
# in `case.rs` — exactly, because `rename_all` is a clone of clap's and clap's uses heck.
= "1"
= "1"
# syn 2 rather than 3, which is already in the tree via clap_derive: nothing here
# needs the newer API, and matching what is there avoids a second copy.
= { = "3", = ["full"] }
# No `proc-macro-crate`: it pulls `toml_edit` (and indexmap/winnow/…) into every
# adopter's compile just to read a Cargo.toml rename. The derive reads the few
# dependency forms usage documents itself — see `crate_name.rs`.
# No dependency on usage-argv, not even for tests. This crate emits tokens and
# links nothing, and dev-depending on the runtime it emits code for creates a cycle
# at publish time: `cargo publish` resolves dev-dependencies against the registry,
# so a feature added to usage-argv within a version makes this crate unpublishable
# until the version bumps. serde_derive avoids the same trap the same way.
#
# The crate-level example is therefore `ignore`d here and compiled for real in
# conformance/tests/derive.rs, which is where the derive is tested anyway.
[]
# heck, for tests only: `case::tests` asserts the vendored conversion equals heck's for every
# string up to four chars over an alphabet that reaches every state of the segmenter, which is
# the whole reason to trust it. Unlike usage-argv above, this is no publish cycle — heck is
# third-party and versioned on its own clock — and a dev-dependency is not in an adopter's
# graph at all: `cargo tree -p usage-rs --edges normal` is the proof.
= "0.5"