親トレイト
Rustは「継承(inheritance、deriveとは別)」を持っていませんが、トレイトを他のトレイトの 親として設定することができます。例えば
trait Person { fn name(&self) -> String; } // StudentはPersonを親とする。 // Studentを実装するにはimpl Personが必要。 trait Student: Person { fn university(&self) -> String; } trait Programmer { fn fav_language(&self) -> String; } // CompSciStudent (コンピュータ科学の学生)はProgrammerとStudent両方を親とする。 // CompSciStudentの実装には両方の実装が必要。 trait CompSciStudent: Programmer + Student { fn git_username(&self) -> String; } fn comp_sci_student_greeting(student: &dyn CompSciStudent) -> String { format!( "My name is {} and I attend {}. My Git username is {}", student.name(), student.university(), student.git_username() ) } fn main() {}