如何为特质功能提供类型参数?

时间:2014-08-28 00:59:39

标签: rust type-parameter

这不会编译:

pub trait TheTrait<T> {
    pub fn without_self() -> T;
    pub fn with_self(&self) -> T {
        TheTrait::without_self()
    }
}

因为编译器无法找出TheTrait::without_self()的类型参数。我想要TheTrait<T>::without_self()这样的东西,但我找不到有效的语法。如何向without_self提供类型参数?

2 个答案:

答案 0 :(得分:3)

  

编者注:从Rust 1.0开始,这个答案已经过时了

如果函数签名中没有Selfself,则它不可调用,至少在实现UFCS之前。目前,您可以将Option<Self>作为参数,并使用None::<Self>作为解决方案进行调用。

pub trait TheTrait<T> {
    fn without_self(Option<Self>) -> T;
    fn with_self(&self) -> T {
        TheTrait::without_self(None::<Self>)
    }
}

答案 1 :(得分:2)

  

我想要像TheTrait<T>::without_self()这样的东西,但我找不到有效的语法。如何向without_self提供类型参数?

如今,使用Fully Qualified Syntax你可以这样做:

<T as TheTrait>::without_self()
相关问题