여러 값을 가지고 있는 묶음
impl을 통해 멤버 함수를 구현가능
여러 가지 값이 가능한 데이터
구조체가 곱타입이라면 열거형은 합타입이다.
값이 있거나 없는 경우를 나타내는 Option<T>타입도 열거형이다.
Option<T>는 Some(T) 혹은 None값을 갖는다.
객체지향 언어에서는 클래스 안에 변수와 함수를 함께 작성한다.
러스트에서는 구조체에 변수를, impl 블록에 함수를 작성한다.
기능의 확장이 용이하다.
= 같은 데이터구조에대해 필요에 따라 동작을 달리 가져갈수있다.
= 상속을 받지 않아도 이미 있는 타입(String 등)이나 남이 만든 구조체에 내 함수를 갖다 붙여서 쓸 수 있다.
또한 러스트는 데이터와 동작을 분리함으로써 트레이트를 통한 행위 기반 제약을 설정할 수 있고, 이를 통해 정적 다형성(또는 정적 덕타이핑)을 제공한다