是否可以使用关联的常量来初始化固定大小数组的长度



在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板条箱。

最新更新