是否可以使用泛型的类型参数来控制数组的大小?

时间:2015-01-25 13:07:25

标签: rust

以下内容仅用作示例,而不是有效的Rust代码。

struct Vec<T: Sized, Count> {
    a: [T; Count]
}

在C ++模板中可能有类似的东西,但我还没有在Rust中看到它。

2 个答案:

答案 0 :(得分:14)

此功能尚不可用。 RFC 2000 — const generics会在实施时支持它。


如果你看一下Rust的设计,你会发现它首先是通过解决最难的问题(内存安全,数据竞争免费)来开始的,但是还有很多领域它是&#34;不完整&# 34; (与可以实现的目标相比)。

特别是,今天的通用结构和功能有些限制:

  • 缺乏高级金币类型(HKT)
  • 缺少非类型参数=&gt;数组是特殊的,并且实现数组的特征是a known issue,解决方法是为几个不同的维度实现它
  • 缺乏可变参数=&gt;元组是特殊的,并且为所有元组实现特性同样困难

目前,这些都没有实施,不是因为它们不是理想的,而仅仅是因为缺乏时间。 Rust 1.0的想法不是发布一个不会发展的最终产品,而是一个稳定的基础,从此开始;一些或许所有人都会来。

答案 1 :(得分:3)

在等待Rust获得对此的一流支持时,有一些提供此功能的特定级别的板条箱,例如: