if
条件,你给
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);
}
}
您还可以通过删除生存期和使用模式来简化代码
let a = if ... {} else {};
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);
}