在特徵上放置一個邊界

在定義新特徵時,可以強制希望實現此特徵的型別驗證許多約束或邊界。

以標準庫為例, DerefMut 特性要求型別首先實現其兄弟 Deref 特徵:

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

反過來,這使得 DerefMut 能夠使用由 Deref 定義的相關型別 Target

雖然語法可能讓人聯想到繼承:

  • 它引入了繫結特徵的所有相關項(常量,型別,函式……)
  • 它實現了從 &DerefMut&Deref 的多型性

這在本質上是不同的:

  • 可以使用生命週期(例如'static)作為約束
  • 不可能覆蓋繫結的特徵項(甚至不是函式)

因此,最好將其視為一個單獨的概念。