[Pre-RFC] Partially Initialized Types

If you have something like

let foo = Foo::foo();

the compiler translates this to

let foo: Foo();
foo.foo();

i.e. all struct constructors would implicitly and necessarily use in-place construction.

As for fields on Foo, if you have something like:

struct Foo {
    bar: u16,
}
impl Foo {
    fn foo(&mut self() -> Self, bar: i32) {
        self.bar = bar;
    }
}

You’d be forced to have that “self.bar = bar” (or self.bar = something_else) line in the constructor.