返回对方法中创建的值的引用的方法?

时间:2019-01-13 23:13:11

标签: rust lifetime ownership

我有一个结构,其中包含对两个不同值的引用。有两个构造函数-一个构造函数每个值都引用一个,而一个构造函数只对其中一个值引用,而给另一个默认值。

我的问题是分配该默认值。请参见下面的代码:

struct Foo<'t> {
    a: &'t String,
    b: &'t String,
}

impl<'t> Foo<'t> {
    fn new(a: &'t String, b: &'t String) -> Foo<'t> {
        Foo { a, b }
    }

    fn new_with_default_b(a: &'t String) -> Foo<'t> {
        Foo {
            a,
            b: &String::from("default"),
        }
    }
}

无法编译:

error[E0515]: cannot return value referencing temporary value
  --> src/lib.rs:12:9
   |
12 | /         Foo {
13 | |             a,
14 | |             b: &String::from("default"),
   | |                 ----------------------- temporary value created here
15 | |         }
   | |_________^ returns a value referencing data owned by the current function

是否可以解决此问题?

0 个答案:

没有答案