Üstözellikler (Supertraits)
Bir özellik (trait), onu gerçekleştiren türlerin üstözellikler (supertraits) olarak adlandırılan diğer özellikleri de gerçekleştirmesini gerektirebilir. Burada, Pet’i gerçekleştiren herhangi bir tür Animal’ı da gerçekleştirmelidir.
trait Animal { fn leg_count(&self) -> u32; } trait Pet: Animal { fn name(&self) -> String; } struct Dog(String); impl Animal for Dog { fn leg_count(&self) -> u32 { 4 } } impl Pet for Dog { fn name(&self) -> String { self.0.clone() } } fn main() { let puppy = Dog(String::from("Rex")); println!("{}, {} bacağa sahip", puppy.name(), puppy.leg_count()); }
Bu bazen “özellik kalıtımı (trait inheritance)” olarak adlandırılır ancak öğrencilerin bunun nesne yönelimli kalıtım (OO inheritance) gibi davranmasını beklememesi gerekir. Bu sadece bir özelliğin gerçekleştirmeleri üzerinde ek bir gereksinimi (requirement) belirtir.