这两种写法有啥区别呢?

    1. trait Trait {}
    2. // generic type parameter
    3. fn foo<T: Trait>(arg: T) {
    4. }
    5. // impl Trait in argument position
    6. fn foo(arg: impl Trait) {
    7. }

    几乎一样,impl trait是泛型的语法糖。impl 是匿名泛型。

    注意:impl trait无法通过

    foo::(1)的方式显式指定泛型