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