2013-02-11 108 views
7

Rust語言是否支持類似於C++方式的泛型代碼中的常量值?看起來語言overview不公佈它。使用C++中的常量參數化類型允許使用預先分配的緩衝區來創建具有不同大小的對象,具體取決於客戶端的需求(類型如stlsoft :: auto_buffer)。
如果不是,那麼在Rust中實現類似設計的最佳實踐是什麼?Rust泛型中的常量值

回答

8

不,這不以類型安全的方式支持。我們需要類型級的數字文字,比如最近添加的GHC。

但是,您可以使用Rust宏。使用宏,您可以創建「模板」,並通過任意表達式(包括常量)對參數進行參數化,這可以讓您在此處執行所需操作。請注意,如果您現在嘗試此操作,則可能會在宏系統中發現錯誤和限制。

+0

宏看起來像外星人比較核心語言。編譯時表達式是否有剩餘空間作爲Rust未來中函數的普通參數? – tivadj 2013-02-12 13:23:50

+0

我希望參數化函數的類型。用宏執行此操作需要在大多數呼叫站點重新指定該功能。或者,我可以將該功能「存儲」爲結構中許多不同位置的「值」,以使其可訪問。所以參數化的價值會非常好! – dhardy 2015-10-15 10:43:47

+0

我的問題的解決方案不是通過函數進行參數化,而是通過實現特定特徵的類型(可能是空的結構體)來實現。至少在理論上;我或編譯器在複雜性方面存在問題。 – dhardy 2015-10-15 11:09:38