2015-03-03 16 views
12

Tôi có một vector 2d trong Rust mà tôi đang cố gắng lập chỉ mục với biến số động u8. Một ví dụ về những gì tôi đang cố gắng làm là dưới đây:Tôi phải sử dụng `u8` để có thể sử dụng nó làm chỉ mục trong vectơ của mình?

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

Tuy nhiên, tôi nhận được lỗi

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

Những gì tôi phải cast u8 để ở có thể sử dụng nó như là một chỉ số trong tôi vector?

Trả lời

23

Chỉ số thuộc loại usize; usize được sử dụng cho các kích cỡ của bộ sưu tập hoặc chỉ mục vào bộ sưu tập. Nó đại diện cho kích thước con trỏ nguyên gốc trên kiến ​​trúc của bạn.

Đây là những gì bạn cần phải sử dụng để làm việc này đúng:

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

Cảm ơn bạn đã làm rõ! – mjkaufer

Các vấn đề liên quan