有条件地将参数更新为Rust中的函数
我试图有条件地更新函数的参数: 结构A{ foo:i32, 酒吧:i32, } 暗示{有条件地将参数更新为Rust中的函数,rust,Rust,我试图有条件地更新函数的参数: 结构A{ foo:i32, 酒吧:i32, } 暗示{ fn foobar在您的条件中,如果a引用了x,它将在之后被销毁。然后a将保留对已销毁对象的引用 您可以通过在条件之前声明x变量来修复它: struct A { foo: i32, bar: i32, } impl A { fn foobar<'a>(&'a self) { let a; let x; if true
fn foobar在您的
条件中,如果a
引用了x
,它将在之后被销毁。然后a
将保留对已销毁对象的引用
您可以通过在条件之前声明x
变量来修复它:
struct A {
foo: i32,
bar: i32,
}
impl A {
fn foobar<'a>(&'a self) {
let a;
let x;
if true { // something more complex obviously
x = A {
foo: self.foo,
bar: self.bar,
};
a = &x;
} else {
a = self;
}
println!("{} {}", a.foo, a.bar);
}
}
实际上,只需在两个分支中调用函数即可。请注意,这将增加运行时开销,在我看来,这是一段难看的代码。
fn foobar(&self) {
let x;
let a = if true { // something more complex obviously
x = A {
foo: self.foo,
bar: self.bar,
};
&x
} else {
self
};
println!("{} {}", a.foo, a.bar);
}