>>111
例えばスライスをforで回してその値を書き込む関数
#[inline(never)]
fn foo(slice: &[i32]) {
 for t in slice {
  write_volatile!(VOLATILE, *t);
 }
}

生成アセンブリコード
::foo:
 test rsi, rsi
 je .LBB11_3
 shl rsi, 2
 xor eax, eax
.LBB11_2:
 mov ecx, dword ptr [rdi + rax]
 mov dword ptr [rip + ::VOLATILE], ecx
 add rax, 4
 cmp rsi, rax
 jne .LBB11_2
.LBB11_3:
 ret

範囲内かどうかのチェックはC/C++と同じくループ内で1箇所のみで同じ動作になる