2014-08-28 62 views
2

這並不編譯:如何提供類型參數給特徵函數,而不是自我?

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

([從另一個靜態方法(鏽)調用特徵的靜態方法]的可能重複http://stackoverflow.com/questions/24541074/calling-trait-static-method-from-another-static-method -鏽) – huon 2014-08-28 01:25:05

回答

3

如果函數簽名中沒有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>) 
    } 
} 
相關問題