【发布时间】:2019-07-30 06:59:34
【问题描述】:
鉴于我的特征 T 和一大组 std/core 数组(不是切片),我怎样才能使这些数组的 T 实现可用于其他板条箱在稳定的 Rust 上?
通过四处搜索,似乎我唯一的选择(不回避这个问题)是:
- 等待 rfc 2000 稳定实现的 rust 版本:https://github.com/rust-lang/rust/issues/44580
- 为每个数组手动实现特征。
选项 1 不可接受。选项 2 导致编译时间非常长(尤其是当数组集超过 5000 种类型时)。将每个实现隐藏在其自己的功能后面,即功能impl-t-for-array-N 有条件地在T 的实现中为数组[U;N] 编译,从而大大减少了编译时间。 (编译时间从几十分钟到几秒钟)。但是,处理数千个特征造成的延迟仍然很明显。
使用功能和手动实现是处理稳定生锈问题的最惯用方法,还是我缺少更惯用的方法?
【问题讨论】:
-
可能是 X/Y 问题。为什么首先需要支持这么多数组?
-
不得不为 5000 个不同的数组提供一个特征的实现听起来很糟糕。通常最多有 32 个元素,而且我还看到一些 crate 只做 2 的幂(
[T; 64]、[T; 128]、[T; 256]等)。当然,切片类型总是存在的。 -
为什么等待 rfc 2000 是不可接受的,我们都在等待。