Arrays 对于稳定状态下的大量数组,实现trait的惯用方法是什么?

Arrays 对于稳定状态下的大量数组,实现trait的惯用方法是什么?,arrays,rust,Arrays,Rust,鉴于我的特点T和大量std/核心阵列(而非切片),我如何使这些阵列的T实现可用于其他具有稳定锈迹的板条箱 通过四处搜索,似乎我唯一的选择(不会回避这个问题)是: 通过稳定实施rfc 2000,等待锈迹释放: 为每个数组手动实现trait 选项1是不可接受的。选项2会导致很长的编译时间(特别是当数组集超过5000个类型时)。将每个实现隐藏在自己的特性后面,即特性impl-t-for-array-N在tfor-array[U;N]的实现中有条件地编译,这样可以大大缩短编译时间。(编译时间从几十分钟到

鉴于我的特点
T
和大量
std
/
核心
阵列(而非切片),我如何使这些阵列的
T
实现可用于其他具有稳定锈迹的板条箱

通过四处搜索,似乎我唯一的选择(不会回避这个问题)是:

  • 通过稳定实施rfc 2000,等待锈迹释放:
  • 为每个数组手动实现trait 选项1是不可接受的。选项2会导致很长的编译时间(特别是当数组集超过5000个类型时)。将每个实现隐藏在自己的特性后面,即特性
    impl-t-for-array-N
    t
    for-array
    [U;N]
    的实现中有条件地编译,这样可以大大缩短编译时间。(编译时间从几十分钟到几秒钟)。然而,处理数千个特征所造成的延迟仍然是显而易见的

    使用特性和手动实现是在stable rust上处理此问题最惯用的方法,还是我缺少一种更惯用的方法

    使用特性和手动实现是否是在stable rust上处理此问题的最惯用方法


    对。例如,检查trait及其源代码——正如您所看到的,rust使用特殊的宏为长度为的数组实现它可能是一个X/Y问题。为什么首先需要支持这么多阵列?为5000个不同的阵列提供trait的实现听起来很糟糕。通常最多32个元素,我还看到一些板条箱在这之后只执行2次幂(
    [T;64]
    [T;128]
    [T;256]
    ,等等)。当然,切片类型总是存在的。为什么等待rfc 2000是不可接受的,我们都在等待它。