为什么没有参数并返回引用的函数会有生命周期错误?

时间:2016-12-04 22:59:17

标签: rust lifetime

更新:此问题已在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?这似乎是关于如何使用生命周期的有效示例。

0 个答案:

没有答案