Zig에 Rust의 trait이 없다고? 직접 만들면 된다
We have traits at home

Zig에서 런타임 다형성은 인터페이스로, 정적 다형성은 comptime 덕 타이핑으로 구현해 왔다. 하지만 Rust의 trait이나 Haskell의 타입클래스 같은 추상화는 없다. 저자는 컴파일타임 구조체에 관련 함수를 모아 'Trait' 규약을 정의하는 방법을 제안한다. 예로 Reducer와 Num trait을 보여주며, 이 방식이 명확한 계약을 제공하고 컴파일러가 인라인 및 단형화를 수행해 성능 저하 없이 유연성을 준다고 설명한다.
Trait은 단순히 함수와 타입의 묶음으로, 받는 함수가 자신이 정의하지 않은 하위 작업을 어떻게 실행할지 알려준다. vtable과 비슷하게 동작하지만, 런타임이 아닌 comptime에 평가된다는 점이 다르다.