父特质 - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 父特质

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 的章节