- 特性 trait
- 参见:
- 参见:
特性 trait
当然 trait 也可以是泛型。我们在这里定义了一个实现 Drop 的 trait,作为泛型方法来 drop(丢弃) 它本身和输入参数。
// 不可复制的类型。struct Empty;struct Null;// 用到 `T` 的trait 泛型。trait DoubleDrop<T> {// 定义一个关于调用者的方法,接受一个额外的单一参量 `T`,// 且没有任何操作。fn double_drop(self, _: T);}// 针对泛型参量 `T` 和调用者 `U` 实现了 `DoubleDrop<T>` 。impl<T, U> DoubleDrop<T> for U {// 此方法获得了两个传入参数的所有权,并释放这两个参数。fn double_drop(self, _: T) {}}fn main() {let empty = Empty;let null = Null;// 释放 `empty` 和 `null`。empty.double_drop(null);//empty;//null;// ^ 试一试:去掉这两行的注释。}
参见:
Drop, struct, 和 trait
