The Rust vs Zig discussions seems to echo the dichotomy between the declarative and imperative languages, but at the type level. In Rust (as is common in other static languages) you define the types declaratively, while Zig takes the poorly explored route of defining the types imperatively. The declarative way usually is more understandable, cohesive, composable and tool friendly, but not so flexible and understandable-in-the-small as the imperative one.