例如,我们可以采用this code:
use std::rc::Rc;
struct B;
struct A {
obj: Rc<B>,
}
impl A {
fn new(obj: Rc<B>) -> A {
A {
obj: obj,
}
}
}
struct C {
b: Rc<B>,
a: A,
}
impl C {
fn new() -> C {
C {
b: Rc::new(B),
a: A::new(b.clone()),
}
}
}
fn main() {
}
这是一个名为A
的{{1}}结构成员,我想用同一个初始化列表中的另一个值进行初始化。我认为这是不可能的,因此我通常使用a
来执行此操作:
Option<T>
但在我看来这是愚蠢的,因为我在这里做了无用的额外工作,后来我需要总是解开这个选项。有没有办法更简单地做到这一点?
答案 0 :(得分:2)
首先创造价值怎么样?
impl C {
fn new() -> C {
let tmp = Rc::new(B);
C {
b: tmp.clone(),
a: A::new(tmp),
}
}
}