This crate provides a set of alternative #[derive]
attributes for Rust.
derivative uses attributes to make it possible to derive more implementations than the built-in derive(Trait)
. Here are a few examples of stuffs you cannot just derive
.
You can derive Default
on enumerations:
With derivative | Original |
---|---|
{% codesnippet “default-enum.rs” %}{% endcodesnippet %} | {% codesnippet “default-enum-orig.rs” %}{% endcodesnippet %} |
You can use different default values for some fields:
With derivative | Original |
---|---|
{% codesnippet “default-value.rs” %}{% endcodesnippet %} | {% codesnippet “default-value-orig.rs” %}{% endcodesnippet %} |
Want a transparent Debug
implementation for your wrapper? We got that:
With derivative | Original |
---|---|
{% codesnippet “debug-transparent.rs” %}{% endcodesnippet %} | {% codesnippet “debug-transparent-orig.rs” %}{% endcodesnippet %} |
Need to ignore a field? We got that too:
With derivative | Original |
---|---|
{% codesnippet “eq-ignore.rs” %}{% endcodesnippet %} | {% codesnippet “eq-ignore-orig.rs” %}{% endcodesnippet %} |