Rust无输入函数生命周期问题?

新手上路,请多包涵

有一个无参且返回引用的函数,标注了生命周期,函数体返回一个引用,如果这个引用是通过一个函数调用得到的, 则编译不通过,但如果直接返回构造出的结构体的引用则可以通过编译,这是为啥?如果表述不清楚可以看下面代码:

struct Foo;

impl Foo {
    fn from() -> Foo{
        Foo{}
    }
}





#[test]
fn test_no_arg_life() {
    let foo = no_args();
    println!("foo = {}", foo);
}

//重点是这个函数
fn no_args<'a>() -> &'a Foo {
    // 这样写无法通过编译  
   //&Foo::from() 

     //这样写则可以
    &Foo{} 
}

阅读 373
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题