macro-dep-test 0.1.3

testing version resolution for associated macros
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Associated Proc Macro Pattern

It's a common pattern to provide a `foo` crate with trait definitions, and `foo-derive` crate with a
proc-macro derive implementation. Typically, you want `foo` and `foo-derive` to be versioned in
lockstep, because derive crates like to use `#[doc(hidden)]` non-semver-guarded API. Usually, this
is solved by a `derive` feature, which makes `foo` depend on `foo-derive` with `=x.y.z` constraint.

This, however, is problematic for compile times! It means that compilation of `foo-derive` is
sequenced before compilation of `foo`. As `foo-derive` is a derive macro, it needs to parse the Rust
language. Rust is not a small language, so parsing it is fundamentally hard, and requires loads of
code to do correctly. So it takes some time to compile `foo-derive`. What's worse, while normally
Cargo pipelines compilation such that `.rmeta` files are all that's needed to unblock compilation of
dependent crates, for proc macros Cargo really needs to link the whole

...