【发布时间】:2021-04-17 20:19:29
【问题描述】:
我正在尝试有条件地更新函数的参数:
struct A {
foo: i32,
bar: i32,
}
impl A {
fn foobar<'a>(&'a self) {
let a;
if true { // something more complex obviously
let x = A {
foo: self.foo,
bar: self.bar,
};
a = &x;
} else {
a = self;
}
println!("{} {}", a.foo, a.bar);
}
}
这里,函数foobar 接收&A 类型的参数。根据某些情况,我想将此参数替换为 &A 类型的另一个值。
我明白为什么上面的代码会导致错误'x' does not live long enough。我的问题是是否有一种模式可以有条件地更新参数a 的值而不要求它是可变的?有没有办法强制延长x 的生命周期?
【问题讨论】:
-
真的只是在两个分支中调用你的函数。
标签: rust