2015-03-03 9 views
12

Ho un vettore 2D in Rust che sto cercando di indicizzare con una variabile dinamica u8. Un esempio di quello che sto cercando di fare è di seguito:Cosa devo lanciare un `u8` per poterlo usare come indice nel mio vettore?

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

Tuttavia, ottengo l'errore

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

cosa devo lanciare il u8 al grado di usarlo come un indice nel mio vettore?

risposta

23

Gli indici sono di tipo usize; usize viene utilizzato per le dimensioni delle raccolte o degli indici nelle raccolte. Rappresenta la dimensione del puntatore nativo sulla tua architettura.

Questo è ciò che è necessario utilizzare per far funzionare correttamente:

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

Grazie per il chiarimento! – mjkaufer

Problemi correlati