This is more of a style question than a technical one. I am experimenting with value types by building a simple poker card system.I have a 'Deck' struct which consists of two UInt64 (one for the cards in the deck, and the other for the discard) and has various functions for drawing cards, discarding, shuffling, etc.... There is, of course, also a 'Card' struct with sub-enums for rank and suit.The issue arose when I made a 'Hand' struct (which is basically just an array of Card structs + helper functions). As I was adding functions to discard a hand, I found I had a few options:discardHand(hand:Hand) on the 'Deck' - This discards the hand, but the hand struct which is passed in will still contain the cards afterwards, which feels a bit weird to me (perhaps I am just too used to reference types). Could this lead to errors because someone expects the hand to be empty afterwards?discardHand(inout hand:Hand) on the 'Deck' - This discards the hand and updates the hand struct, but is called 'discardHand(&am