# Much like Rust's traits or Haskell's type classes sloth uses a trait system for # polymorphism. trait BasicTrait { fn add() -> i32; } trait AddAssign: Add { fn add_assign(value: i32, rhs: i32) -> i32; } trait Add { fn add(lhs: i32, rhs: i32) -> i32; default impl AddAssign { fn add_assign(value: i32, rhs: i32) -> i32 { return add(value, rhs); } } } # In order to make implementing traits easier you can automatically derive traits. # Types will implicitly derive from Debug, Copy, Eq and Ord if possible. type Person = { name: String, age: i32, hobbies: Set, }; # You can easily derive from more traits using the `derive` keyword. type Person derives Serialize, Deserialize = { name: String, age: i32, hobbies: Set, };