Does Rust have syntax for initializing a struct fi

2019-09-05 13:41发布

问题:

Example code, does not compile:

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

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

The b: a bit isn't valid syntax, is there any way to do this in current Rust? [rustc 0.13.0-nightly (eedfc0779 2014-11-25 22:36:59 +0000)]

Obviously I could repeat input + 1 or use a temporary variable, but I'm curious specifically about using an already-initialized field as input to another field.

回答1:

No, there is not anything for that, nor is it reasonable to expect that there ever will be; Rust’s ownership semantics would make it of very little value as it could only apply to Copy types well, references too.

The alternatives are so simple that complicating the language for such a feature is pretty much guaranteed not to happen.



标签: rust