Rust vs Go in 2026: How I Actually Choose
I've shipped production services in both Rust and Go. Here's the decision framework I actually use, with code, honest trade-offs, and no benchmark wars.
I've shipped production services in both Rust and Go. Here's the decision framework I actually use, with code, honest trade-offs, and no benchmark wars.
Four years into Go generics, here is what I actually reach for in production, the constraints I write, and the patterns I quietly stopped using.
The Go error patterns I actually use in production: fmt.Errorf %w wrapping, sentinel vs typed errors, errors.Is vs errors.As, and errgroup at scale.
Four years with testify, then I migrated off it. What I kept (assert and require), what I dropped (mock and suite), and the plain-Go alternatives…
I've used Go's range-over-func iterators in production for eight months. Here's what I keep reaching for, what I dropped, and where the new pattern bites.
I ignored Go 1.23 iterators for almost a year. Here's what finally made me reach for them, where they're worth it, and the footgun that…
I've shipped Go HTTP services with all the big frameworks. In 2026 I default to net/http with chi, reach for Gin to move fast, and…
Go concurrency patterns I reach for on real projects: worker pools, pipelines, fan-in, and context cancellation, with code and the mistakes I still make.
Go generics shipped in 1.18 and I ignored them for a year. Here are the three patterns I now use in production, plus one I…
I rebuilt the same service in Rust and Go over a weekend. Here is what I actually reach for in 2026, with numbers, code, and…