2017-01-29 31 views

回答

3

在純鏽病方面,難度:

  • 穩定沒有專業化
  • 鏽沒有向下鑄造

話雖這麼說,有替代品,如query_interfaces箱子,促進原則性的下降。

實質上,您希望讓調用者告訴您是否對所討論的流實施了BufReadquery_interfaces或可以創建一個專用的解決方案來運送「可選」的V指針。

但是,我只需要BufReadstream執行。如果需要,來電者可以隨時將其stream包裝爲BufRead::new

3

你不要。 RFC存在的完整原因是因爲之前不可能!

作爲「證明」,考慮str::to_string。在專業化之前,str::to_string使用與ToString所有其他實現者完全相同的機制,這意味着它必須建立並使用格式化基礎結構。這是相對昂貴和積極的基準showed the difference between str::to_string and str::to_owned or String::from。啓用專業化後,Rust編譯器將其用於str::to_string,並且基準得到改進。

如果鏽編譯不能專業化之前專注,這是不大可能其他代碼可以找到一些方法來解決它在一個通用的方式。


針對您的特殊情況下,我同意,你應該接受一些實施BufReadfn read<T: BufRead>(stream: T))。