如何在Rust中初始化列表中的另一个值初始化值?

时间:2016-06-02 07:09:24

标签: initialization rust

例如,我们可以采用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>

但在我看来这是愚蠢的,因为我在这里做了无用的额外工作,后来我需要总是解开这个选项。有没有办法更简单地做到这一点?

1 个答案:

答案 0 :(得分:2)

首先创造价值怎么样?

impl C {
    fn new() -> C {
        let tmp = Rc::new(B);
        C {
            b: tmp.clone(),
            a: A::new(tmp),
        }
    }
}