2012-11-05 92 views

回答

2

(注:生鏽0.5,這是還沒有出來的時候,這一問題被問)

愚蠢的辦法,找出一個值的類型是寫一個函數與錯誤類型,然後嘗試通過它。 :)

fn func(state: int) {} 

生產:

error: mismatched types: expected `int` but found `[mut [mut u8]/4]/4` (expected int but found vector) 

所以這是你喜歡的類型。除了它不再是這樣寫的,所以看起來這個輸出中有一個錯誤。非常想問問編譯器。你真的想要:

fn func(state: [mut [mut u8 * 4] * 4]) { ... } 

mut裏面的向量是不贊成;您可以通過使變量本身mut獲得相同的效果。這給我們帶來了:

let mut state = [[0u8, ..4], ..4]; 
func(state); 

// ... 

fn func(state: [[u8 * 4] * 4]) {} 

如果你想真正改變state裏面的功能,你需要一個可變的指針指向它,所以最後:

let mut state = [[0u8, ..4], ..4]; 
func(&mut state); 

// ... 

fn func(state: &mut [[u8 * 4] * 4]) {}