모든 impl이 extension이고 모든 Trait들이 프로토콜이다
swift 언어에서 감명받았던 것 중 하나가 표준 라이브러리의 클래스를 임의로 확장해서 입맛대로 기능을 추가할 수 있었다는 것이었다. 스위프트에서의 키워드 extension
을 사용하면 예를 들어 RGB 컬러에 대한 데이터를 담는 구조체에 Hue값을 컨트롤 할 수 있게 새로운 메서드를 집어넣을 수 있다.
하지만 러스트는 한 술 더 떠, 모든 Struct나 Trait(아직 제대로 배우진 않았지만)을 확장하는 방향으로 메서드를 추가하게 된다. 정말로 덕타이핑이라는 말이 괜히 나온게 아니다. 정말로 Quack
트레잇을 구현한 모든 객체는 Duck
타입으로 간주해도 된다. 즉, 어떤 동물이던 간에 꽥꽥거리는 소리를 내기만 하면 우리는 그것을 오리로 간주할 수 있다. 이 패러다임은 너무나도 확장이 용이하여 순식간에 구조체를 오리로 만들수도, 로보트로 만들수도 있다.