Что я должен использовать `u8`, чтобы использовать его в качестве индекса в моем векторе?

У меня есть 2d-вектор в Rust, который я пытаюсь индексировать с помощью динамической переменной u8. Пример того, что я пытаюсь сделать, приведен ниже:

fn main() {
    let mut vec2d: Vec<Vec<u8>> = Vec::new();

    let row: u8 = 1;
    let col: u8 = 2;

    for i in 0..4 {
        let mut rowVec: Vec<u8> = Vec::new();
        for j in 0..4 {
            rowVec.push(j as u8);
        }
        vec2d.push(rowVec);
    }

    println!("{}",vec2d[row][col]);
}

Однако я получаю сообщение об ошибке

error: the trait `core::ops::Index<u8>` is not implemented for the type `collections::vec::Vec<collections::vec::Vec<u8>>` [E0277]

Что я должен использовать u8, чтобы использовать его как индекс в моем векторе?

Ответ 1

Индексы имеют тип usize; usize используется для размеров коллекций или индексов в коллекциях. Он представляет собственный размер указателя в вашей архитектуре.

Это то, что вам нужно для правильной работы:

println!("{}",vec2d[row as usize][col as usize]);