Rust 返回包含可变值的结构

Rust 返回包含可变值的结构,rust,Rust,我有以下代码,其中我试图返回结构Foo,并为字段values返回一组默认值。这些值以后可能会更改。但编译器抱怨: error: `initial` does not live long enough 如何做到这一点?还有别的选择吗 structfoo{ fn new()->Foo这里有两个问题 首先,不需要使用&mut使结构字段可变。可变性是在Rust中继承的。也就是说,如果将Foo存储在可变变量(let mut f:Foo)中,则其字段是可变的;如果它位于不可变变量(let f:Foo)中,

我有以下代码,其中我试图返回结构
Foo
,并为字段
values
返回一组默认值。这些值以后可能会更改。但编译器抱怨:

error: `initial` does not live long enough
如何做到这一点?还有别的选择吗

structfoo{

fn new()->Foo这里有两个问题

首先,不需要使用
&mut
使结构字段可变。可变性是在Rust中继承的。也就是说,如果将
Foo
存储在可变变量(
let mut f:Foo
)中,则其字段是可变的;如果它位于不可变变量(
let f:Foo
)中,则其字段是可变的,其字段是不可变的。解决方案是只使用:

structfoo{
价值观:Vec,
}
并按值返回一个
Foo

第二个问题(以及实际编译错误的来源)您试图将借用返回到您在函数中创建的对象。这是不可能的。不,这是没有办法的;您无法以某种方式延长
initial
的生命周期,返回
initial
以及借用将不起作用。真的。这是Rust专门为其设计的一个功能出价

如果要从函数中转移某些内容,必须满足以下两个条件之一:

  • 它被存储在函数之外的某个位置,该位置将比当前调用的时间长(例如,在中,您得到了一个作为参数的借用;返回不起作用),或者

  • 您正在返回所有权,而不仅仅是借用的引用

  • 更正后的
    Foo
    有效,因为它拥有
    Vec