如何在Rust中将数值用作泛型参数?

时间:2019-06-29 03:29:06

标签: templates generics rust

作为初学者,我正在学习Rust。 我很好奇我们如何使用数值作为泛型参数,这些参数将在编译时类似于C ++中的模板进行编译

这是等效的C ++代码。

template<class T, int dim>
struct vec {
    std::array<T, dim> data;
    vec(): data() {}
    vec(const vec<T, dim>& obj): data(obj.data) {}
    ~vec() {}
};
int main() {
    vec<float, 3> v3;
}

上面的代码将与

相同地进行编译
struct vec {
    std::array<float, 3> data;
    vec(): data() {}
    vec(const vec<float, 3>& obj): data(obj.data) {}
    ~vec() {}
};
int main() {
    vec v3;
}

2 个答案:

答案 0 :(得分:3)

我相信您正在寻找const generics,但尚未降落到稳定的Rust中。您可能会发现使用不稳定的Rust的示例here

答案 1 :(得分:-3)

您知道吗,Rust中实际上有泛型!

我强烈建议您仔细阅读"The Rust Programming Language", TRPL

您的问题可以在here中回答。

您实际上并不需要Rust中的构造函数和析构函数。 Rust将为您做到。 TRPL提供了可靠的example

此外,对于矢量,已经支持通用数据类型,因此您不必自己实现它。检出this