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
实现可用于其他具有稳定锈迹的板条箱
通过四处搜索,似乎我唯一的选择(不会回避这个问题)是:
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是不可接受的,我们都在等待它。