• 特性 trait
    • 参见:

    特性 trait

    当然 trait 也可以是泛型。我们在这里定义了一个实现 Droptrait,作为泛型方法来 drop(丢弃) 它本身和输入参数。

    1. // 不可复制的类型。
    2. struct Empty;
    3. struct Null;
    4. // 用到 `T` 的trait 泛型。
    5. trait DoubleDrop<T> {
    6. // 定义一个关于调用者的方法,接受一个额外的单一参量 `T`,
    7. // 且没有任何操作。
    8. fn double_drop(self, _: T);
    9. }
    10. // 针对泛型参量 `T` 和调用者 `U` 实现了 `DoubleDrop<T>` 。
    11. impl<T, U> DoubleDrop<T> for U {
    12. // 此方法获得了两个传入参数的所有权,并释放这两个参数。
    13. fn double_drop(self, _: T) {}
    14. }
    15. fn main() {
    16. let empty = Empty;
    17. let null = Null;
    18. // 释放 `empty` 和 `null`。
    19. empty.double_drop(null);
    20. //empty;
    21. //null;
    22. // ^ 试一试:去掉这两行的注释。
    23. }

    参见:

    Drop, struct, 和 trait