あなたは、テンプレート関連する定数を使用して固定サイズの配列を初期化できますか? Cで
std::array<int ,3> arr; //fixed size array of 3
内の積分を通過させる能力を持っている++私は錆が、このためのサポートが組み込まれていることを知っているが、私は、線形代数ベクトルライブラリのようなものを作成したい場合はどう?
struct Vec<T, size: i32>{
data: [T, size];
}
type Vec3f = Vec::<f32, 3>;
type Vec4f = Vec::<f32, 4>;
これは、現在私がD.に何をすべきか私は錆が今Associated Constantsを持っていると聞いています。
私は長い間Rustを使用していませんが、これはこの問題にまったく対処していないようです。
私が見ることができる限り、関連するconstは形質でのみ利用可能であり、それは手でベクトルタイプN
を作成する必要があることを意味します。
非整数ジェネリックパラメータ(整数のうちの整数型)の有用性は、コンパイル時にそれらの値を計算する能力に左右されます。 'A -1'だけの場合は、コンパイル時関数の評価(おそらく始めに制限されているかもしれません)がそれらを得るために必要であると思われます。 –
@MatthieuM。計算をしなくても、固定サイズの配列の共通の特性を一様に実装したり、固定サイズの配列の周りのラッパーである構造を作成するときの重複を減らすなど、コンパイル時に整数を整数にすることは既に非常に便利です(固定サイズベクトルおよび行列)。しかし、私は計算がさらに大きくなることに同意します。 – delnan
固定サイズベクトル/行列の場合、私は 'SmallVec <[T; N]>'を使って、配列型を直接渡すことで作業します。私はコンパイラの特性が 'T'と' N'を抽出するために配列に実装されたことを願っています(私はそれをマクロで自分で実装しています)...現在、整数パラメータを実装するのは時期尚早かもしれません。デザインが今後のユースケースと互換性があることを保証してください。したがって、 'const fn'の経験が増えるまで待つ方が良いかもしれません。 –