如何使用指针算术获取向量中元素的索引?

ide*_*n42 4 pointers vector rust

在 C 中,您可以使用指针偏移量来获取数组中元素的索引,例如:

index = element_pointer - &vector[0];
Run Code Online (Sandbox Code Playgroud)

给定对数组中元素的引用,这在 Rust 中也应该是可能的。

虽然 Rust 能够从向量元素获取内存地址,将它们转换为usize,然后减去它们 - 在 Rust 中是否有更方便/惯用的方法来做到这一点?

Chr*_*son 5

没有更简单的方法了。我认为原因是很难保证任何给你答案的操作或方法只允许你将它与 a Vec(或更可能的切片)和该集合中的某些内容一起使用;Rust 不希望您通过对不同向量的引用来调用它。

更惯用的做法是从一开始就避免这样做。由于生命周期的原因,您无法将引用存储到Vec任何非常永久的地方Vec,因此无论如何,当您获得引用时,您可能会方便地使用索引。

特别是,例如,在迭代时,您可以使用enumerate来迭代pairs (index, &item)