구조체 필드에 참조타입도 없고
레딧 보니까 러스트도 구조체 스택에 할당한다고 하는데
왜 소유권 이동이 발생함?
튜플이 (i32, i32)인 경우에 copy 트레잇 적용받는 것처럼 구조체도 소유권 이동이 아니라 copy되어야 하는거 아냐?
구조체 필드에 참조타입도 없고
레딧 보니까 러스트도 구조체 스택에 할당한다고 하는데
왜 소유권 이동이 발생함?
튜플이 (i32, i32)인 경우에 copy 트레잇 적용받는 것처럼 구조체도 소유권 이동이 아니라 copy되어야 하는거 아냐?
Compiler explorer 직접 찍어봐
https://godbolt.org/z/e64bxnWe1
찍어봤는데 이게 뭔소리야?
문법 존나 신기하게 생겼네
내 추측이지만 튜플도 12개까지만 한다는 거 봐서는 성능 때문인듯...
리터럴타입이 아니라 객체로 취급해서 근가?
그렇게 만들어서 그런 거 아니게슴? Copy derive 하면 복사되겟지
그렇게 만든 이유가 궁금함. 튜플처럼 선택적으로 발생하는거면 몰라도 싹다 이동시키는 이유가 뭐임?
기본이 이동이니까? Copy 를 구현한 타입만 복사 되고 구조체도 하나의 타입인거 잖아 내생각엔 이럼
해당 struct가 단순히 데이터를 나타내는 것 이상의 용도로 사용 될 수 있으니까
좋은 예시가 안 떠오르는데.. 예를 들어 어떤 스트럭트의 개수를 세고 싶어서 글로벌 변수를 하나 두고 new일 때 +1 Drop 될 때 -1이 되도록 설계를 해 두었는데 자동으로 Copy가 구현 된다면 설계자의 의도와 다르게 Copy를 통해 struct가 복사 되면서 개수가 -1개가 되는 상황이 발생할 수 있음. new