where 分句

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