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

Ngọ*_*yễn 3 generics templates 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;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将被编译为相同的

struct vec {
    std::array<float, 3> data;
    vec(): data() {}
    vec(const vec<float, 3>& obj): data(obj.data) {}
    ~vec() {}
};
int main() {
    vec v3;
}
Run Code Online (Sandbox Code Playgroud)

nbr*_*brr 5

我相信您正在寻找const generics,它尚未在稳定的 Rust 中落地。您可能会在这里找到一个使用不稳定 Rust 的示例。

  • 仅供记录,const 泛型[已在 1.51 中稳定下来](https://blog.rust-lang.org/2021/03/25/Rust-1.51.0.html)。 (4认同)