代码之家  ›  专栏  ›  技术社区  ›  Zack VT

为什么Rust在方法名之后添加泛型类型定义?

  •  0
  • Zack VT  · 技术社区  · 4 年前

    mixup<V, W> :

    impl<T, U> Point<T, U> {
        fn mixup<V, W>(self, other: Point<V, W>) -> Point<T, W> {
            Point {
                x: self.x,
                y: other.y,
            }
        }
    }
    

    impl<T, U> 用于确保点结构的实现与所有泛型类型匹配。但是,一般定义的目的是什么 混音<五、 W> 一点因为返回类型和参数泛型定义得很清楚,所以它看起来像是没有意义的代码,那么它还有什么其他用途呢?文档中没有提到这一点。

    以下是指向文档的链接: Rust Official Documentation Chap 10

    1 回复  |  直到 4 年前
        1
  •  0
  •   Rob Napier    4 年前

    答案在您链接的文本中:

    该方法将另一个点作为参数,该参数可能与调用mixup的自点具有不同的类型。该方法创建一个新的点实例,其x值来自自点(类型为T),y值来自传入点(类型为W)。

    V型和W型可能不同于T型和U型。 mixup 需要 Point<T,U> Point<V,W> ,并返回 Point<T,W> ,取代 y:U 具有 y:W example code 显示它在做什么。请尝试删除 <V, W>

    当您说“返回类型和参数泛型已明确定义”时,它们的定义仅限于此 <V,W> .