在 C 中,您可以使用指针偏移量来获取数组中元素的索引,例如:
index = element_pointer - &vector[0];
给定对数组中元素的引用,这在 Rust 中也应该是可能的。
虽然 Rust 能够从向量元素获取内存地址,将它们转换为 usize
,然后减去它们 - 在 Rust 中是否有更方便/惯用的方法来执行此操作?
最佳答案
没有更简单的方法。我认为原因是很难保证给你答案的任何操作或方法只允许你将它与 Vec
(或更可能的切片)和该集合中的某些东西一起使用; Rust 不允许您使用对不同向量的引用来调用它。
更惯用的做法是首先避免需要这样做。由于生命周期的缘故,您不能将引用存储到 Vec
中非常永久远离 Vec
的任何地方,因此当您获得无论如何引用。
特别是,例如,在迭代时,您会使用 enumerate
遍历对 (index, &item)
。
关于pointers - 如何使用指针算法获取向量中元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219667/