Closed DaviRain-Su closed 3 years ago
fn main() {
let c1 = || { "c1";};
let c2 = || { "c2"; };
let i = "c3";
let c3 = || { i };
let v = [c1, c2, c3];
}
// 报错:
// let c3 = || { i };
// | -------- the found closure
// 7 | let v = [c1, c2, c3];
// | ^^ expected fn pointer, found closure
当闭包没有任何捕获变量的时候,会被强制当成 fn函数指针使用,所以 c1 和 c2 是同类型,c3有了捕获变量,就是个匿名结构体闭包类型。
P173页
代码范例
错误信息
Rust Playground Link: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=22419e75274995ff389f466c9adb01ed