这不会编译:
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
提供类型参数?
答案 0 :(得分:3)
编者注:从Rust 1.0开始,这个答案已经过时了
如果函数签名中没有Self
或self
,则它不可调用,至少在实现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()