how do people deal with iterating a Swift struct value-type property?
Here's an obvious situation that must arise all the time for people: struct Foundation { var columns : [Column] = [Column(), Column()] } struct Column : CustomStringConvertible { var cards = [Card]() var description : String { return String(describing:self.cards) } } struct Card {} var f = Foundation() for var c in f.columns { c.cards.append(Card()) } That code is legal but of course it has no effect on f , because var c is still a copy — the actual columns of f are unaffected. I am not having any difficulties understanding why that happens. My question is what people generally do about it.