为什么Rust类型中的所有索引都是usize?

时间:2016-10-26 10:27:27

标签: indexing rust

Rust的std::ops::Index<T> only支持Tusize。这背后的原因是什么?

此外,当您尝试使用其他任何内容时,没有建议“尝试使用usize”,只是“特征[&'static str]: core::ops::Index<u8>不满意”错误。这可能是因为他们计划支持更多类型T,但由于某种原因推迟这样做了吗?

1 个答案:

答案 0 :(得分:9)

  

Rust std::ops::Index<T>仅支持T成为usize

这不是真的。例如,HashMap接受密钥类型可以借用的任何类型(因此您可以使用HashMap<String, _>索引&str

切片只允许您使用usize对其进行索引,所有容器类型在内存中假装为或实际上 是线性的。这是因为usize是用于索引它们的正确的类型。任何其他类型将无法访问容器的完整潜在范围,或者将允许不可能存在的索引。

过去人们已经问过要添加较小的类型来进行切片索引,但这种方法会向后兼容,因此不会很快发生。