Exercise 1: Rectangle Struct with a mutating scale(by:) Method — Possible Solution ========================================================================================= struct Rectangle { var width: Double var height: Double mutating func scale(by factor: Double) { width *= factor height *= factor } } var original = Rectangle(width: 10, height: 5) var copy = original copy.scale(by: 2) print(original.width) // Prints: 10.0 print(copy.width) // Prints: 20.0 HOW IT WORKS: Rectangle is a struct, so `var copy = original` creates a genuinely independent copy of original's own current values, not a shared reference to the same instance. Calling copy.scale(by: 2) mutates only that copy - doubling copy's own width and height in place - and has no effect whatsoever on original, since the two variables now hold entirely separate values with no connection between them. The mutating keyword on scale(by:) is required because the method reassigns width and height, which a struct's own regular (non-mutating) methods aren't allowed to do - and calling it requires copy to be a var, since a let-declared struct could never accept a mutating call. ANSWER: original.width stays 10.0 and copy.width becomes 20.0 after scaling only the copy, confirming that assigning a struct to a new variable creates a genuinely independent copy - mutating one has no effect on the other, since they no longer share any underlying state once the copy was made. WHY THIS WORKS AS AN ANSWER ------------------------------ This correctly implements a mutating struct method and demonstrates, with printed real values, that copying a struct and mutating the copy leaves the original completely untouched - the defining behavior of a value type.