父特质

Rust 没有“继承”,但你可以将一个 trait 定义为另一个 trait 的超集。例如:

trait Person {
    fn name(&self) -> String;
}

// Person 是 Student 的超 trait。
// 实现 Student 需要你同时实现 Person。
trait Student: Person {
    fn university(&self) -> String;
}

trait Programmer {
    fn fav_language(&self) -> String;
}

// CompSciStudent(计算机科学学生)是 Programmer 和 Student 的子 trait。
// 实现 CompSciStudent 需要你实现两个超 trait。
trait CompSciStudent: Programmer + Student {
    fn git_username(&self) -> String;
}

fn comp_sci_student_greeting(student: &dyn CompSciStudent) -> String {
    format!(
        "我的名字是 {},我就读于 {}。我最喜欢的语言是 {}。我的 Git 用户名是 {}",
        student.name(),
        student.university(),
        student.fav_language(),
        student.git_username()
    )
}

fn main() {}

另请参阅:

《Rust 程序设计语言》中关于超 trait 的章节