Long ago Swift introduced a nice concept differentiating between value and reference semantic using Struct and Classes. As we all know, Struct is a value semantic, which means when value of one struct is assigned to another struct, only value is copied, not the reference - Which in other words