타입 이름
User, Color, AlwaysEqual처럼
묶음 자체의 의미를 타입 이름으로 먼저 정합니다.
튜플보다 의미가 분명해야 할 때 구조체를 정의하고, 인스턴스 생성과 필드 접근, 업데이트 문법, 소유권 이동 여부를 함께 읽습니다.
User, Color, AlwaysEqual처럼
묶음 자체의 의미를 타입 이름으로 먼저 정합니다.
일반 구조체는 email: String처럼 이름과 타입을 적어 순서
의존을 줄입니다.
구조체 이름 뒤 중괄호에 필드 값을 넣고, mut이면 점
표기법으로 값을 바꿀 수 있습니다.
필드명과 변수명이 같으면 축약하고, ..user1은 남은
필드를 기존 인스턴스에서 가져옵니다.
필드 의미가 중요하고 읽는 사람이 user.email처럼
이름으로 접근해야 할 때 사용합니다.
Color(i32, i32, i32)처럼 같은 모양의 튜플을 서로 다른
타입으로 구분하고 싶을 때 씁니다.
저장할 필드는 없지만 특정 타입에 트레이트 구현을 붙이고 싶을 때
struct AlwaysEqual;처럼 둡니다.
구조체가 String을 필드로 가지면 인스턴스가 그 데이터를
소유합니다. ..user1로 새 인스턴스를 만들 때 소유 타입
필드가 이동되면 원본 인스턴스를 더 이상 온전히 사용할 수 없습니다.
구조체는 관련 데이터를 하나의 타입으로 묶고 각 필드에 이름을 부여해 의미를 명확히 하는 문법이며, 인스턴스 생성과 업데이트 문법에서는 필드 값의 소유권 이동 여부를 함께 고려해야 합니다.