why-rust-write-impl-two-T

十二月 20, 2023

why-rust-write-impl-two-T

第一个 T 是声明,第二个 T 是使用。 如果不先声明,那么 Rust 就不能确定 T 是泛型还是具体类型,示例如下:

struct Foo<T> {
    x: T
}

impl<T> Foo<T> {
    fn new() -> Foo<T> {
        unimplemented!()
    }
}

type T = i32;

impl Foo<T> { // 你能确定 T 是泛型还是 i32 吗?
    fn new_t() -> Foo<T> {
        unimplemented!()
    }
}