Most of the operators and the special syntax of Rust are backed up by traits, which tell the compiler how to perform the operation on the specific data type it's looking at. We've seen some of those already, but many of them can't be derived, so if we want to enable that syntax for our data types, we need to implement them manually.