Después de siete años desarrollando en Rust, el autor decidió reimplementar una biblioteca JSONPath existente en Rust utilizando Zig para obtener una experiencia concreta del lenguaje como posible sucesor de C. El proyecto consistió en portar la misma funcionalidad: analizar y evaluar expresiones JSONPath definidas en la RFC 9535, de modo que la comparación se basara en código real en lugar de ejemplos toy. La primera sorpresa fue el estado del soporte de IDE: Zig ofrecía poco más que resaltado de sintaxis y autocompletado básico, lo que impulsó al autor a regresar al trabajo desde la línea de comandos. Esta carencia de herramientas pesadas de IDE resultó ser refrescante, ya que encontró que el flujo de trabajo sencillo `zig build test` era directo y eventualmente adoptó una configuración de editor basada en helix.
En cuanto a la organización del proyecto, la estructura plana de Zig impulsó al autor a mantener el código relacionado en menos archivos, en contraste con la tendencia de Rust a crear jerarquías profundas de módulos. El autor observó que, aunque el anidamiento es posible, introduce fricción en las importaciones y rara vez mejora la legibilidad, lo que llevó a una preferencia por mantener todo en un solo lugar a menos que un proyecto requiera realmente una jerarquía. Las pruebas revelaron otro contraste: las pruebas unitarias en línea por defecto de Rust son cómodas, mientras que el enfoque equivalente en Zig resultó verboso en una disposición plana, lo que motivó al autor a colocar las pruebas directamente en los archivos de modelo después de configurarlas en build.zig.
Desde el punto de vista del paradigma, el cambio del estilo funcional‑inclinado de Rust —iteradores sin costo, datos inmutables, combinadores monádicos— al núcleo imperativo de Zig fue evidente. Mientras Rust favorecía transformaciones inmutables y combinadores sobre iteradores, Zig impulsó al autor hacia la mutación in‑place y el manejo explícito de asignadores. La gestión manual de la memoria se convirtió en una preocupación constante; cada función necesitaba un asignador, y olvidar llamar a deinit o hacerlo dos veces provocaba fugas o corrupción que el TestAllocator podía ayudar a detectar, pero la disciplina seguía siendo un cambio notable respecto a las garantías automáticas de drop de Rust. En general, el autor encontró atractiva la claridad y velocidad de bajo nivel de Zig, al tiempo que reconocía que su ecosistema más joven todavía carece de algunos de los pulidos y características de conveniencia presentes en Rust.