2013-02-11 18 views
7

Rust言語は、ジェネリックコードの定数値をC++と同様にサポートしていますか?言語overviewは広告していないようです。 C++で定数を使用して型をパラメータ化すると、クライアントのニーズに応じて異なるサイズの事前割り当て済みバッファを持つオブジェクトを作成できます(stlsoft :: auto_bufferなどの型)。
そうでなければ、同様のデザインをRustで実装するベストプラクティスは何ですか?Rustジェネリックの定数値

答えて

8

いいえ、タイプセーフな方法ではサポートされていません。最近追加されたGHCのように、型レベルの数値リテラルが必要になります。

ただし、Rustマクロを使用できます。マクロを使用すると、定数を含む任意の式に対してパラメータ化された "テンプレート"を作成できます。これにより、ここで必要なことを行うことができます。現時点でこれを試すと、マクロシステムにバグや制限があることに注意してください。

+0

マクロは、コア言語と比較してエイリアンのようです。 Rustの将来の関数の通常のパラメータにコンパイル時の式が残っていますか? – tivadj

+0

関数に対して型をパラメータ化しようとしています。マクロを使用すると、ほとんどの呼び出しサイトで関数の再指定が必要になります。あるいは、構造体内のさまざまな場所に関数を「値」として「格納」してアクセス可能にすることができます。値をパラメータ化することは本当に素晴らしいでしょう! – dhardy

+0

私の問題の解決策は、ある種の特性を実装している型(恐らく空の構造体)に対して関数をパラメータ化することではなく、そうすることです。少なくとも理論的には;私またはコンパイラは複雑さに問題があります。 – dhardy

関連する問題