如何调用数组或元组类型的关联函数?

ala*_*ris 4 traits rust associated-types

我可以foo为数组定义一个关联函数,如下所示:

pub trait T {
    fn foo();
}

impl<X> T for [X; 2] {
    fn foo() { panic!("Whatever") }
}
Run Code Online (Sandbox Code Playgroud)

但现在我该如何调用这个函数呢?我注意到类似的语法[usize;2]::foo()是无效的。

Bla*_*ans 7

您可以使用完全限定的语法<Type as Trait>::function()。这是你的例子:

pub trait Trait {
    fn foo();
}

impl<X> Trait for [X; 2] {
    fn foo() {
        panic!("Whatever");
    }
}

fn main() {
    <[usize; 2] as Trait>::foo();
}
Run Code Online (Sandbox Code Playgroud)

在操场上看到它。