更新:此问题已在Is there any way to return a reference to a variable created in a function?
中得到解答此处提到的令人困惑的例子已在new Rust book中清除。
基于Rust书中的闭包示例:
fn factory() -> &(Fn(i32) -> i32) {
let num = 5;
|x| x + num
}
let f = factory();
let answer = f(1);
assert_eq!(6, answer);
此示例会出错:
error: missing lifetime specifier [E0106]
fn factory() -> &(Fn(i32) -> i32) {
^~~~~~~~~~~~~~~~~
我发现这个fn factory() -> &(Fn(i32) -> i32)
可以抽象为
fn foo<'a>() -> &'a Someclosure.
我试图理解为什么函数不带参数会在这里产生生命周期问题。
这与Rust书中lifetime elision中给出的示例类似:fn foo<'a>() -> &'a str
?这似乎是关于如何使用生命周期的有效示例。