A derivable trait is a trait implementation that Rust can generate when a type uses the #[derive(...)] annotation. Traits define shared behavior, and application structs can implement standard-library traits such as Debug. section 3.2.3
Deriving behavior for a request model
A Course model derives Deserialize, Serialize, Debug, and Clone, giving it serialization, deserialization, debugging, and cloning behavior without handwritten implementations.
Derivation differs from a custom trait implementation: RemoveCourse can be implemented separately for IndividualTutor and TrainingInstitute when their removal rules differ. section 3.2.3
