如何避免在特征实现中两次指定相同类型?

时间:2018-07-20 14:44:32

标签: rust

我记得有一种定义特征的方法,因此您无需编写此特征:

trait A<T> {
    fn f();
}

impl A<T> for T {
    fn f() {}
}

据我所知,可以像这样缩短impl A<T> for T行:

impl A for T {

我不记得这样做的确切方法。我相信有一个与这种缩短有关的术语。

1 个答案:

答案 0 :(得分:3)

您要查找的成分是默认类型参数,您可以在其中将T默认设置为Self

trait A<T = Self> {
    fn f();
}

struct Tee;
impl A for Tee {   // the "A" is A<Self>, i.e. A<Tee>.
    fn f() {} 
}

在标准库中,PartialEq特征是使用此特征的示例。