【问题标题】:How to use numeric values as generics paramters in Rust? [duplicate]如何在 Rust 中使用数值作为泛型参数? [复制]
【发布时间】:2019-06-29 03:29:06
【问题描述】:

我正在学习 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;
}

【问题讨论】:

  • Const 泛型仍然不稳定,如下所示,但您可以尝试使用宏。它们在 Rust 中比在 C++ 中更强大。

标签: templates generics rust


【解决方案1】:

我相信您正在寻找 const generics,它尚未登陆稳定的 Rust。你可以找到一个使用不稳定 Rust 的示例 here

【讨论】:

【解决方案2】:

你知道吗,我们实际上在 Rust 中有泛型!

我强烈建议你通读"The Rust Programming Language", TRPL

您的问题可以在here回答。

你并不真的需要 Rust 中的构造函数和析构函数。 Rust 会为你做这件事。 TRPL 提供了可靠的example

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

【讨论】:

  • “我们实际上在 Rust 中有泛型!”是的,但是 const 泛型是不稳定的,并且在您提供的 TRPL 链接中没有提到。 Link only answer 也不鼓励使用 SO。 “在 Rust 中,你真的不需要 [...] 析构函数”好吧,是的,你需要!在某些情况下,默认析构函数可能不够用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2021-11-20
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
相关资源
最近更新 更多