在C++中,您可以在模板中传递积分
std::array<int, 3> arr; //fixed size array of 3
我知道 Rust 已经内置了对此的支持,但是如果我想创建类似线性代数向量库的东西怎么办?
struct Vec<T, size: usize> {
data: [T; size],
}
type Vec3f = Vec<f32, 3>;
type Vec4f = Vec<f32, 4>;
这就是我目前在 D 中所做的。我听说 Rust 现在有关联常量。
我已经很久没有使用 Rust 了,但这似乎根本没有解决这个问题,或者我错过了什么?
据我所知,相关常量仅在特征中可用,这意味着我仍然需要手动创建N
向量类型。
不,关联的常量没有帮助,也不打算这样做。关联的任何内容都是输出,而用例(例如问题中的用例)需要输入。原则上,人们可以从类型参数和具有相关常量的特征中构造一些东西(至少,只要您可以使用类型参数的相关常量 - 可惜这还没有奏效)。但这具有可怕的人体工程学设计,并不比像typenum这样的现有黑客好多少。
整数类型参数是非常需要的,因为正如你所注意到的,它们支持了许多在当前 Rust 中并不可行的东西。人们谈论这个并计划它,但它还没有到那里。
目前不支持整数类型参数,但是该IIRC有一个RFC,并且进行了长期的讨论。
在此期间,您可以使用typenum
板条箱。