示例代码,不编译:
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
或使用一个临时变量,但我特别好奇使用已经初始化的字段作为另一个字段的输入。
答案 0 :(得分:4)
不,没有任何东西可以做到,也没有理由期待永远存在; Rust的所有权语义会使它具有非常小的价值,因为它只适用于 以及引用。Copy
类型
替代方案非常简单,几乎可以保证不会发生这种功能的语言复杂化。