]>
Commit | Line | Data |
---|---|---|
f2b60f7d FG |
1 | // compile-flags: -Z mir-opt-level=4 |
2 | ||
3 | // EMIT_MIR lower_array_len_e2e.array_bound.PreCodegen.after.mir | |
4 | pub fn array_bound<const N: usize>(index: usize, slice: &[u8; N]) -> u8 { | |
5 | if index < slice.len() { | |
6 | slice[index] | |
7 | } else { | |
8 | 42 | |
9 | } | |
10 | } | |
11 | ||
12 | // EMIT_MIR lower_array_len_e2e.array_bound_mut.PreCodegen.after.mir | |
13 | pub fn array_bound_mut<const N: usize>(index: usize, slice: &mut [u8; N]) -> u8 { | |
14 | if index < slice.len() { | |
15 | slice[index] | |
16 | } else { | |
17 | slice[0] = 42; | |
18 | ||
19 | 42 | |
20 | } | |
21 | } | |
22 | ||
23 | // EMIT_MIR lower_array_len_e2e.array_len.PreCodegen.after.mir | |
24 | pub fn array_len<const N: usize>(arr: &[u8; N]) -> usize { | |
25 | arr.len() | |
26 | } | |
27 | ||
28 | // EMIT_MIR lower_array_len_e2e.array_len_by_value.PreCodegen.after.mir | |
29 | pub fn array_len_by_value<const N: usize>(arr: [u8; N]) -> usize { | |
30 | arr.len() | |
31 | } | |
32 | ||
33 | fn main() { | |
34 | let _ = array_bound(3, &[0, 1, 2, 3]); | |
35 | let mut tmp = [0, 1, 2, 3, 4]; | |
36 | let _ = array_bound_mut(3, &mut [0, 1, 2, 3]); | |
37 | let _ = array_len(&[0]); | |
38 | let _ = array_len_by_value([0, 2]); | |
39 | } |