Vector 有没有办法在Rust中从1索引向量?

Vector 有没有办法在Rust中从1索引向量?,vector,rust,Vector,Rust,我正在实现一个二进制堆,在其他语言中,最方便的方法是存储一个内部数组,但将该数组的第一个元素设置为null,然后忽略它。这样,如果节点位于索引i,则其子节点将始终位于i*2和i*2+1 如果使用索引0,这将不再有效,因为0*2=0。然而,在Rust中,没有null,因此我不得不使用Vec而不是Vec,这使得一切都变得更加麻烦 所以我的问题是,有没有办法定制Vec,以便索引1引用第一个元素?看起来您的问题可能由和的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将这个问题标记为已经回

我正在实现一个二进制堆,在其他语言中,最方便的方法是存储一个内部数组,但将该数组的第一个元素设置为
null
,然后忽略它。这样,如果节点位于索引
i
,则其子节点将始终位于
i*2
i*2+1

如果使用索引0,这将不再有效,因为0*2=0。然而,在Rust中,没有
null
,因此我不得不使用
Vec
而不是
Vec
,这使得一切都变得更加麻烦


所以我的问题是,有没有办法定制
Vec
,以便索引1引用第一个元素?

看起来您的问题可能由和的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将这个问题标记为已经回答。@Shepmaster谢谢,这确实回答了我的问题。你也可以用
i*2+1
i*2+2
来代替儿童索引?@Zeta oops,也许我昨晚没有为未来的搜索者提供足够的睡眠,明确说明两个副本的融合:没有,您不能更改
Vec
的索引方式,但可以围绕
Vec
创建一个新类型,并根据需要为该类型实现
索引。