struct 는 관련 데이터를 네 타입으로 이름 붙이고 묶는 방법이야. Rust 는 세 모양을 주는데, 첫 번째를 제일 자주 쓰게 돼.
이름 붙은 필드 struct
일꾼: 이름이랑 타입이 있는 필드들. 각 필드를 이름 붙여 인스턴스를 만들고, 점 표기로 필드에 접근해. 필드에 이름이 있어서 코드가 스스로 읽혀 — user.email 이 user.2 를 매번 이겨.
튜플 struct 와 unit struct
튜플 struct 는 이름 없는 타입 필드를 가져 — struct Meters(f64) 처럼 맨 숫자에 구별되는 타입을 주는 얇은 래퍼에 좋아. unit struct 는 필드가 아예 없어 — 마커로, 또는 데이터는 안 저장하고 trait 을 구현할 때 쓸모 있어. 둘 다 틈새고; 이름 붙은 필드 struct 가 주류야.
필드 init 단축이랑 struct update. 변수가 필드랑 같은 이름이면
email: email 대신 그냥 email 이라 써. 그리고 리터럴 끝의 ..other 가 나머지 필드를 다른 인스턴스에서 채워 — '저거랑 같은데 이거만 바꿔' 에 딱이야.struct 는 모델링의 심장이야
소유권이 데이터가 어떻게 움직이는지 말한다면, struct 는 데이터가 무엇 인지 말해. 잘 이름 붙은 struct 에 잘 고른 필드 타입이면 유효하지 않은 상태를 표현하기 어렵게 만들어 — Rust 의 'illegal state 를 표현 불가능하게' 철학의 전반부야. (후반부는 enum, 바로 다음 트랙.)