struct A { mut: v int } struct B { a A } struct C { mut: b B } struct D { mut: c C } mut b := B{} b = B{A{2}} b.a.v = 1 // Error (field a immutable) b.a = A{} // Error (field a immutable) ===output=== cannot modify immutable field `a` (type `B`) declare the field with `mut:` struct B { mut: a A } cannot modify immutable field `a` (type `B`) declare the field with `mut:` struct B { mut: a A }