Example 1: Writing your own Clone
In the previous chapters,
we've learned how to define a simple derive-deftly
template,
and how to export it to the rest of the world.
In this chapter, we'll use derive-deftly
to implement our own version of Rust's standard
#[derive(Clone)]
macro.
At first, it will be very simple;
later on, we'll add a few features
that Rust's derive(Clone)
doesn't have.
With these examples, we'll learn more feature of derive-deftly, including:
- Writing templates that apply to structs and enums.
- Writing templates that apply to generic types.
- Using a variety of expansions, including ones for top-level types, variants, and fields.
Aside:
We've picked a simple trait to derive on purpose, so that we can focus on the features of derive-deftly without the additional complexity of introducing an unfamiliar trait as well.
Please let us know if this approach works for you! We're learning how to explain these concepts as we go along.