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
子句就无法直接表达: