besok spent seven years as a Rust developer and made the comparison honest by reimplementing his own library in Zig: jsonpath-rust (RFC 9535 JSONPath) rebuilt as zig-jsonpath. Not a toy, not sprawling, and something the community can use. He states the caveat up front — first Zig project, so some decisions came from Rust habits rather than Zig idiom.

What the port actually surfaced:

  • IDE support was the memorable surprise: little beyond syntax highlighting and basic completion. That pushed him to the CLI, made build.zig the centre of the workflow (zig build test -Dfilter=..., -Ddebug-query=true, a compliance target), and ended with him moving off a full IDE entirely.
  • Flat structure is the default. The Rust version needed 11 files across nested folders; the Zig version fit in four files. He does not think it scales, but the threshold for needing hierarchy is much higher than he expected — which made him question reaching for folders out of habit.
  • No functional paradigm. Rust’s combinators, monadic error handling, and immutable transforms give way to in-place mutation, forks of cursor state, and explicit loops. He found the Zig code less readable, and treats that as an honest reflection of each language’s design goals.
  • Allocators are everywhere and you enforce the rules by hand. Three failures bit him: a forgotten deinit, a deinit skipped on an error path, and a double deinit when ownership was handed off. Zig’s test allocators caught all three — but only after he wrote the tests that exercise the failing allocations.
  • Ecosystem and API maturity are the real costs: scarce libraries, a regex engine without Unicode property escapes (which surfaced directly while implementing RFC 9535 filter functions), and a standard library whose API shifts between versions.

The verdict is measured: straightforward, modern, fast, and a credible successor to C — still young, with rough edges he expects to smooth out as it matures.

The transferable lesson is not about Zig. Reimplementing something you have already written in another language is the cheapest way to separate language habits from real design decisions, and the structural observation about folder depth applies just as well back in Rust projects.