1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-03-27 16:25:43 +02:00

Add speaker note with manual derive example (#2607)

This commit is contained in:
Nicole L 2025-02-05 16:10:25 -08:00 committed by GitHub
parent bb8cbbcb7c
commit 12fb4379f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -26,8 +26,28 @@ fn main() {
<details>
Derivation is implemented with macros, and many crates provide useful derive
macros to add useful functionality. For example, `serde` can derive
serialization support for a struct using `#[derive(Serialize)]`.
- Derivation is implemented with macros, and many crates provide useful derive
macros to add useful functionality. For example, `serde` can derive
serialization support for a struct using `#[derive(Serialize)]`.
- Derivation is usually provided for traits that have a common boilerplate-y
implementation that is correct for most cases. For example, demonstrate how a
manual `Clone` impl can be repetitive compared to deriving the trait:
```rust,ignore
impl Clone for Player {
fn clone(&self) -> Self {
Player {
name: self.name.clone(),
strength: self.strength.clone(),
hit_points: self.hit_points.clone(),
}
}
}
```
Not all of the `.clone()`s in the above are necessary in this case, but this
demonstrates the generally boilerplate-y pattern that manual impls would
follow, which should help make the use of `derive` clear to students.
</details>