Useful procedural macro crates
As procedural macros can be distributed as crates, a lot of emerging helpful macro crates are available, which can be found at crates.io
. Using them can greatly reduce the boilerplate you need to write for generating Rust code. Some of them are as follows:
derive-new
: A derive macro provides a default all-fields constructor for structs and is quite customizable.derive-more
: A derive macro that circumvents the limitation where we wrap a type for which we already have a lot of traits auto-implemented, but lose the ability to create our own type wrapping for it. This crate helps us provide the same set of traits, even on these wrapper types.lazy_static
: This crate provides a function-like procedural macro calledlazy_static!
, where you can declarestatic
values that require dynamically initialized types. For example, you can declare a configuration object as aHashMap
and can access it globally across the code base.