Что я должен использовать `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]);