小编Edw*_*yan的帖子

Rust 中的泛型部分专业化

让我们看一些数学向量的例子。根据空间维度,它由不同数量的组件组成。

  • 对于 2D:x,y;
  • 对于 3D:x、y、z;
  • 对于 4D:x、y、z、w;
  • 通用:N 个组件。

在C++中我可以使用SFINAE概念来实现它。

template <size_t D, typename T, typename = void>
struct Vector;

// Implement for 2D
template<size_t D, typename T>
struct Vector <D, T, std::enable_if_t<(D == 2)>>
{
    T x;
    T y;
}

// Implement for 3D
template<size_t D, typename T>
struct Vector <D, T, std::enable_if_t<(D == 3)>>
{
    T x;
    T y;
    T z;
}
    
// Implement for 4D
template<size_t D, typename T>
struct Vector <D, T, std::enable_if_t<(D == 4)>>
{ …
Run Code Online (Sandbox Code Playgroud)

generics rust

13
推荐指数
1
解决办法
9886
查看次数

标签 统计

generics ×1

rust ×1