구조체와 열거형, impl

구조체

여러 값을 가지고 있는 묶음

impl을 통해 멤버 함수를 구현가능

열거형

여러 가지 값이 가능한 데이터

구조체가 곱타입이라면 열거형은 합타입이다.

값이 있거나 없는 경우를 나타내는 Option<T>타입도 열거형이다.

Option<T>는 Some(T) 혹은 None값을 갖는다.

impl 블록의 분리

객체지향 언어에서는 클래스 안에 변수와 함수를 함께 작성한다.

러스트에서는 구조체에 변수를, impl 블록에 함수를 작성한다.

기능의 확장이 용이하다.

= 같은 데이터구조에대해 필요에 따라 동작을 달리 가져갈수있다.

= 상속을 받지 않아도 이미 있는 타입(String 등)이나 남이 만든 구조체에 내 함수를 갖다 붙여서 쓸 수 있다.

또한  러스트는 데이터와 동작을 분리함으로써 트레이트를 통한 행위 기반 제약을 설정할 수 있고, 이를 통해 정적 다형성(또는 정적 덕타이핑)을 제공한다