This is a list of places in Rust where implementing a trait or using a struct affects the syntax of your code. I think of these features as “magical” because using them can change the behavior of very basic Rust code (let, for-in, &, etc.). What follows is a small list of (hopefully) illustrative examples, and a short epilogue pointing you to more articles if this topic interests you.