Zig 也能拥有 Traits 抽象机制
We have traits at home

最近我花更多时间编写 Zig 代码,发现了一种在用户层实现类似 Rust Traits 或 Haskell Typeclasses 的新约定。Zig 目前主要依赖动态接口和 comptime 鸭子类型来实现多态,前者有性能开销,后者缺乏明确的类型契约。我提出了一种名为 Traits 的编译时结构体约定,它将相关函数打包,既保留了编译时优化的优势,又提供了清晰的类型合同。通过这种机制,我们可以为自定义类型甚至内置类型定义算术操作,让代码既像 C++ 模板那样高效,又具备更好的可读性和 IDE 支持。
Traits 本质上就是函数和类型的集合,它们告诉接收函数如何执行那些不由其负责定义的具体子任务。