边界检查

在 Rust 中,默认情况下,对切片(slices)和向量(vectors)等容器类型的访问涉及边界检查。这些检查可能会影响性能,在热循环(hot loop, 经常执行的循环代码)内,尽管不太频繁,但仍然存在。

有几种安全的方法可以更改代码,以便编译器了解容器长度并优化掉边界检查。

  • 在循环中用迭代替换直接元素访问。
  • 在循环中索引到 Vec 时,先制作 Vec 的切片,然后在循环内部对切片进行索引。
  • 在索引变量的范围上添加断言。 示例 1示例 2

让这些方法起作用可能有些棘手。边界检查指南 对这个主题进行了更详细的讨论。

作为最后的手段,还有不安全的方法 get_uncheckedget_unchecked_mut