我正在使用 Rust 0.8 版本。
为什么我可以这样做:
fn add(num: ~int) -> ~fn(int) -> int { |x|
*num + x
}
但不包括这个:
fn outer(num: ~int) -> ~fn(int) -> int { |x|
*inner(num) + x
}
fn inner(num: ~int) -> ~int {
num
}
第二个错误提示为:“error: cannot move out of captured outer variable in a heap closure”。调用函数有何特殊之处?
问题在于内部函数可能会对包装后的函数进行脏操作,而静态分析无法捕捉到。