Rust是否具有使用早期字段初始化struct字段的语法?

时间:2014-11-27 05:21:57

标签: rust

示例代码,不编译:

pub struct S {
    pub a: int,
    pub b: int
}

impl S {
    pub fn new(input: int) -> S {
        S { a: input + 1, b: a }
    }
}

b: a位是无效的语法,有没有办法在当前的Rust中执行此操作? [rustc 0.13.0-nightly(eedfc0779 2014-11-25 22:36:59 +0000)]

显然我可以重复input + 1或使用一个临时变量,但我特别好奇使用已经初始化的字段作为另一个字段的输入。

1 个答案:

答案 0 :(得分:4)

不,没有任何东西可以做到,也没有理由期待永远存在; Rust的所有权语义会使它具有非常小的价值,因为它只适用于Copy类型 以及引用

替代方案非常简单,几乎可以保证不会发生这种功能的语言复杂化。