where 分句
- 当分别指定泛型的类型和约束会更清晰时:
- 当使用
where
从句比正常语法更有表现力时。本例中的impl
如果不用where
从句,就无法直接表达。
use std::fmt::Debug;
trait PrintInOption {
// 这里需要一个 `where` 从句,否则就要表达成 `T: Debug`(这样意思就变了),
// 或着改用另一种间接的方法。
impl<T> PrintInOption for T where
Option<T>: Debug {
// 我们要将 `Option<T>: Debug` 作为约束,因为那是要打印的内容。
// 否则我们会给出错误的约束。
}
}
fn main() {
let vec = vec![1, 2, 3];
}