Why synthesized init cannot initialize private var/let?

struct Foo {
    // 1) error: 'Foo' initializer is inaccessible due to 'private' protection level
    private var bar: Int

    // 2) this makes synthesized init work, but it should be "private", not "readable"
//    private(set) var bar: Int

    // 3) so must hand write init
    init(bar: Int) {
        self.bar = bar
    }
}


let foo = Foo(bar: 100)

seems overly restrictive.

Ok. Makes sense that private should not leak out.

Would be nice if private var/let can be annotated as @initializable to allow synthesized init initializations.