about summary refs log tree commit diff
path: root/tests/ui/indexing/indexing-integral-types.rs
blob: a91696a6fd513a3c56dd5aa68e59af525cd66ba9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//! Test that only usize can be used for indexing arrays and slices.

pub fn main() {
    let v: Vec<isize> = vec![0, 1, 2, 3, 4, 5];
    let s: String = "abcdef".to_string();

    // Valid indexing with usize
    v[3_usize];
    v[3];
    v[3u8]; //~ ERROR the type `[isize]` cannot be indexed by `u8`
    v[3i8]; //~ ERROR the type `[isize]` cannot be indexed by `i8`
    v[3u32]; //~ ERROR the type `[isize]` cannot be indexed by `u32`
    v[3i32]; //~ ERROR the type `[isize]` cannot be indexed by `i32`
    s.as_bytes()[3_usize];
    s.as_bytes()[3];
    s.as_bytes()[3u8]; //~ ERROR the type `[u8]` cannot be indexed by `u8`
    s.as_bytes()[3i8]; //~ ERROR the type `[u8]` cannot be indexed by `i8`
    s.as_bytes()[3u32]; //~ ERROR the type `[u8]` cannot be indexed by `u32`
    s.as_bytes()[3i32]; //~ ERROR the type `[u8]` cannot be indexed by `i32`
}