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

Jef*_*ges 6 indexing rust

Rust std::ops::Index<T> 支持T成为一个usize.这背后的原因是什么?

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

DK.*_*DK. 11

Rust std::ops::Index<T>只支持T成为一个usize.

事实并非如此. HashMap例如,接受密钥类型可以借用的任何类型(因此您可以HashMap<String, _>使用a 索引a &str).

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

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

  • 添加较小类型的索引如何向后不兼容? (2认同)