Nicholas Bishop
Nicholas Bishop

Reputation: 1141

Does Rust have syntax for initializing a struct field with an earlier field?

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.

Upvotes: 2

Views: 1036

Answers (1)

Chris Morgan
Chris Morgan

Reputation: 90712

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.

Upvotes: 4

Related Questions