2015-03-03 12 views
12

Mam wektor 2d w Rust, który próbuję indeksować dynamiczną zmienną u8. Przykładem tego, co próbuję zrobić, to poniżej:Co muszę rzucić "U8", aby móc go używać jako indeksu w moim wektorze?

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]); 
} 

Jednakże pojawia się błąd

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

co muszę rzucić u8 w stanie go używać jako wskaźnik w moim wektor?

Odpowiedz

23

Indeksy są typu usize; usize służy do rozmiarów kolekcji lub indeksów do kolekcji. Reprezentuje natywny rozmiar wskaźnika w twojej architekturze.

To co trzeba użyć do tego, aby działać poprawnie:

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

Dzięki za wyjaśnienie! – mjkaufer

Powiązane problemy