在稳定的Rust中为大量数组实现特征的惯用方式是什么?

时间:2019-03-08 09:09:55

标签: arrays rust

鉴于我的特征T和一大堆std / core数组(不是切片),我该如何实现{{1} }在稳定的Rust上可用于其他板条箱的阵列?

通过搜索,似乎我唯一的选择(不回避此问题)是:

  1. 使用稳定的rfc 2000实现来等待锈的释放:https://github.com/rust-lang/rust/issues/44580
  2. 为每个数组手动实现特征。

选项1不可接受。选项2导致很长的编译时间(尤其是当数组的集合超过5000个类型时)。将每个单独的实现隐藏在其自身功能的后面,即功能T有条件地在数组impl-t-for-array-N的{​​{1}}实现中进行编译,可大大减少编译时间。 (编译时间从几十分钟到几秒钟)。但是,处理数千个功能引起的延迟仍然很明显。

使用功能和手动实现是在稳定锈蚀上解决此问题的最惯用方式,还是我缺少一种惯用方式?

1 个答案:

答案 0 :(得分:1)

  

使用特征和手动实现是解决稳定锈蚀问题的最惯用方式

是的。例如,检查Debug特征及其来源-如您所见,rust使用特殊的宏对长度<= 32

的数组实现该特征