2012-11-05 94 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]) {}