从Vec <proc() - =“”> uint&gt; </proc()>调用过程

时间:2014-12-15 20:22:48

标签: rust

在尝试回答Rust array of functions时(我的回答很好),我创造了以下代码:

fn main() {
    let mut a : Vec<proc() -> uint>;
    for i in range(0u, 11) {
        a[i] = proc(){i};
    }
    println!("{} {} {}", a[1](), a[5](), a[9]());
}

请忽略proc被弃用的事实,我只是想到应该使用的是代替闭包(我当时不知道move和未装箱的闭包)

但是,由于以下原因,我无法调用向量的元素:

 <anon>:6:26: 6:30 error: cannot move out of dereference (dereference is implicit, due to indexing)
 <anon>:6     println!("{} {} {}", a[1](), a[5](), a[9]());

这个错误意味着什么?它不应该只返回uint吗?

1 个答案:

答案 0 :(得分:3)

proc()是只能使用一次的闭包,因此调用它们消耗它们。

在你的情况下,这意味着将闭包移出Vec<>以便使用它,这是不可能的,因为索引是对&指针的解除引用,它只允许不可变访问