在特征上放置一个边界

在定义新特征时,可以强制希望实现此特征的类型验证许多约束或边界。

以标准库为例, DerefMut 特性要求类型首先实现其兄弟 Deref 特征:

pub trait DerefMut: Deref {
    fn deref_mut(&mut self) -> &mut Self::Target;
}

反过来,这使得 DerefMut 能够使用由 Deref 定义的相关类型 Target

虽然语法可能让人联想到继承:

  • 它引入了绑定特征的所有相关项(常量,类型,函数……)
  • 它实现了从 &DerefMut&Deref 的多态性

这在本质上是不同的:

  • 可以使用生命周期(例如'static)作为约束
  • 不可能覆盖绑定的特征项(甚至不是函数)

因此,最好将其视为一个单独的概念。