struct의 내부 메소드에서 struct의 data(내부 프로퍼티)를 수정하려면 mutating 키워드를 선언해야 한다.
만약 하지 않는다면❓

struct = 값 타입⭐️
값 타입 인스턴스의 프로퍼티 변경 시 원본 값은 변경되지 않고 인스턴스를 복사해서 변경한다.
즉, 원본 값은 그대로이기 때문에 수정 사항 반영이 되지 않는다.
struct Counter {
var count = 0
func increase() {
count += 1 // ❌ 컴파일 에러
}
}
var counter = Counter()
counter.increase()
counter는 값 타입 → stack에 저장됨
increase()를 호출하면, counter의 복사본이 함수 안에 전달됨
복사본 내부의 count += 1 → 복사본만 바뀜, 원본은 그대로
함수 끝나면 복사본은 사라짐
📌 즉, 아무리 바꿔도 원본 데이터에는 아무런 변화가 없음!
따라서 Swift는 이러한 수정을 막고, mutating 키워드를 통해 의도를 명확히 표현하도록 강제한다.
(언어 설계적 안전장치🔒)