<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf" -->

---
title: Choosing Rust for All the Wrong Reasons (Diary of a...
description: A seasoned developer reflects on two years of deliberate Rust adoption, arguing his reasons were 'wrong' by professional standards — aesthetic, contrarian, and...
canonical: https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Choosing Rust for All the Wrong Reasons (Diary of a Mercenary) | daily.dev
og:description: A seasoned developer reflects on two years of deliberate Rust adoption, arguing his reasons were 'wrong' by professional standards — aesthetic, contrarian, and...
og:url: https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf
og:image: https://api.daily.dev/og/posts/P8m8OBYxf.png
og:image:alt: Choosing Rust for All the Wrong Reasons (Diary of a Mercenary)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Choosing Rust for All the Wrong Reasons (Diary of a Mercenary)

**[Medium](https://daily.dev/sources/medium_js)** · 43 min read · 3 upvotes · 0 comments

## Summary

A seasoned developer reflects on two years of deliberate Rust adoption, arguing his reasons were 'wrong' by professional standards — aesthetic, contrarian, and quasi-monastic — yet honest. The piece covers the borrow checker's real limits (memory safety is a floor, not a ceiling), a fair case for Go's team-friendliness, Rust's algebraic data types as 'smuggled functional programming,' and the practical payments: governance-as-artifact via exhaustive enums, lightweight tooling, and targeted PyO3 rebar. It also catalogs Rust's growing role as the load-bearing substrate under Python's AI ecosystem (pydantic-core, ruff, uv, polars) and the JS toolchain (SWC, Biome, Turbopack). Honest deflations include the dependency provenance problem, raw speed being irrelevant in I/O-bound services, and async Rust's steep ceremony. The conclusion: Rust settled into the workshop not by conversion but by reflex, one unremarkable reach at a time.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@krisguttenbergovitz/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary-0b6dd9e31313>

## Questions this post answers

### What are the real practical benefits of using Rust in a Python or Node codebase without rewriting everything?

The most useful pattern is writing a small amount of Rust to reinforce a specific bottleneck, such as a hot loop, validation path, or parser, using bindings like PyO3, while leaving the surrounding Python or Node code unchanged. This avoids a full rewrite but does add build costs: cross-compilation targets, cargo in CI, and longer Docker builds, which prebuilt wheels and maturin only partly offset.

_Developers weighing a targeted Rust rewrite against a full migration can track real-world tradeoffs like these on daily.dev._

### Why does Rust's borrow checker not prevent business logic bugs like integer overflow in a discount calculation?

The borrow checker only enforces memory safety rules around ownership and borrowing; it has no concept of business-logic correctness. A function computing a discount as price minus (price times percent divided by 100) compiles cleanly, passes clippy, and is memory-safe, yet still silently overflows or produces a nonsensical result if percent exceeds 100, because u32 arithmetic wraps in release mode.

_Anyone debugging logic errors that slip past a type system's safety guarantees can find deeper technical writeups on daily.dev._

### Why did the Bun runtime port its codebase from Zig to Rust in 2025?

Bun's experimental branch appeared in May and by July had ported roughly 530,000 lines from Zig to Rust in eleven days, executed by AI agents at a cost comparable to one senior engineer's year, according to the reported timeline. Zig's creator publicly reviewed the port as "unreviewed slop," and critics noted the port was carried out by the same company that owns both the runtime and the AI agents used.

_Developers tracking major runtime rewrites and AI-driven porting efforts can follow the fallout on daily.dev._

## Similar posts on daily.dev

- [Rust is Just a Tool](https://daily.dev/posts/rust-is-just-a-tool-epvi4zuzn) · Hacker News · 33 upvotes · 2 comments
- [Why I don't love Rust \(either\)](https://daily.dev/posts/why-i-don-t-love-rust-either--64xgca2jb) · Lobsters · 10 upvotes · 0 comments
- [Rust is a disappointment](https://daily.dev/posts/rust-is-a-disappointment-stnsaxzae) · Hacker News · 26 upvotes · 9 comments

---

Tags: [#python](https://daily.dev/tags/python), [#golang](https://daily.dev/tags/golang), [#rust](https://daily.dev/tags/rust), [#type-systems](https://daily.dev/tags/type-systems)

[View this post on daily.dev](https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Choosing Rust for All the Wrong Reasons (Diary of a Mercenary)","url":"https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf"},"datePublished":"2026-07-25T19:36:21.275Z","dateModified":"2026-09-14T08:03:34.542Z","description":"A seasoned developer reflects on two years of deliberate Rust adoption, arguing his reasons were 'wrong' by professional standards — aesthetic, contrarian, and...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8dc159777cca2c2ac2cf4c577d6df1b6?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8dc159777cca2c2ac2cf4c577d6df1b6?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python,golang,rust,type-systems","timeRequired":"PT43M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"Choosing Rust for All the Wrong Reasons (Diary of a Mercenary)"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/choosing-rust-for-all-the-wrong-reasons-diary-of-a-mercenary--p8m8obyxf#faq","mainEntity":[{"@type":"Question","name":"What are the real practical benefits of using Rust in a Python or Node codebase without rewriting everything?","acceptedAnswer":{"@type":"Answer","text":"The most useful pattern is writing a small amount of Rust to reinforce a specific bottleneck, such as a hot loop, validation path, or parser, using bindings like PyO3, while leaving the surrounding Python or Node code unchanged. This avoids a full rewrite but does add build costs: cross-compilation targets, cargo in CI, and longer Docker builds, which prebuilt wheels and maturin only partly offset. Developers weighing a targeted Rust rewrite against a full migration can track real-world tradeoffs like these on daily.dev."}},{"@type":"Question","name":"Why does Rust's borrow checker not prevent business logic bugs like integer overflow in a discount calculation?","acceptedAnswer":{"@type":"Answer","text":"The borrow checker only enforces memory safety rules around ownership and borrowing; it has no concept of business-logic correctness. A function computing a discount as price minus (price times percent divided by 100) compiles cleanly, passes clippy, and is memory-safe, yet still silently overflows or produces a nonsensical result if percent exceeds 100, because u32 arithmetic wraps in release mode. Anyone debugging logic errors that slip past a type system's safety guarantees can find deeper technical writeups on daily.dev."}},{"@type":"Question","name":"Why did the Bun runtime port its codebase from Zig to Rust in 2025?","acceptedAnswer":{"@type":"Answer","text":"Bun's experimental branch appeared in May and by July had ported roughly 530,000 lines from Zig to Rust in eleven days, executed by AI agents at a cost comparable to one senior engineer's year, according to the reported timeline. Zig's creator publicly reviewed the port as \"unreviewed slop,\" and critics noted the port was carried out by the same company that owns both the runtime and the AI agents used. Developers tracking major runtime rewrites and AI-driven porting efforts can follow the fallout on daily.dev."}}]}
```

