Where 分句

约束也可以使用 where 子句来表达,它位于开括号 { 之前,而不是在类型首次提及时。此外,where 子句可以将约束应用于任意类型,而不仅限于类型参数。

where 子句在以下情况下特别有用:

  • 当单独指定泛型类型和约束更清晰时:
impl <A: TraitB + TraitC, D: TraitE + TraitF> MyTrait<A, D> for YourType {} // 使用 `where` 子句表达约束 impl <A, D> MyTrait<A, D> for YourType where A: TraitB + TraitC, D: TraitE + TraitF {}
  • 当使用 where 子句比使用普通语法更具表现力时。这个例子中的 impl 如果不使用 where 子句就无法直接表达:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

另请参阅:

RFCstructtrait