1
votes

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
Work-around let c = input + 1; S { a: c, b: c } - Matthieu M.

1 Answers

4
votes

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.