July 16, 2026

Cast away? More like cast drama

Show HN: Galois connections for composable numeric casts in Rust

Rust fans found a way to make number conversions less cursed — and people are weirdly thrilled

TLDR: A Rust developer released a library to make number conversions predictable instead of quietly weird. The community vibe was split between admiration for the safety-first rigor and amusement that even simple number casting now has full-blown drama.

A fresh Show HN post turned a niche coding problem into a tiny community soap opera: how do you convert one kind of number into another without surprise disasters? The creator behind Rust crate connections says the usual quick-cast tools can quietly round, clip, or mangle values, especially when you chain several conversions together. His pitch is simple in human terms: make those tradeoffs explicit, make them composable, and prove the behavior instead of just hoping for the best. For a crowd that has seen one too many “why did this become -1?” bugs, that landed hard.

The strongest mood in the discussion was a mix of “finally, someone is taking this seriously” and “wow, this is gloriously overengineered”. Fans loved the promise of lawful, test-backed conversions and the crate’s no-unsafe, heap-free vibe. The dramatic undertone? This is exactly the sort of tool Rust people adore: painstaking, mathematically tidy, and proudly built to stop silent foot-guns before they happen. Skeptics, meanwhile, could easily read the whole thing as bringing a cathedral organ to a birthday party — impressive, but maybe a lot for everyday casting.

The funniest bit is that the villain of the story is basically the humble cast operator itself. The demo where a maxed-out unsigned integer turns into -1 got the kind of reaction usually reserved for cursed screenshots. In other words: one developer posted a library, and the crowd turned it into a referendum on whether number conversion should be a casual convenience or a fully supervised event

Key Points

  • The article introduces `connections`, a Rust crate that represents Galois connections as first-class values for lawful conversions between ordered types.
  • The crate aims to make conversion semantics such as rounding and saturation explicit, unlike Rust’s `as`, `From`, and `Into` mechanisms.
  • Its `compose!` macro combines pairwise connections into a new compile-time `Conn<Src, Dst>` whose round-trip behavior follows Galois-law inequalities.
  • The crate states that every included connection is property-tested, and several generated families also have Kani-based SMT proofs across full bit-width domains.
  • The project is a Rust-native port of a Haskell library, requires Rust 1.88, and treats MSRV increases as minor-version changes.

Hottest takes

"address a common issue with casting" — partialsolve
"their rounding, saturation, and range choices become difficult to reason about" — partialsolve
"what a cast and its reverse do together" — partialsolve
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.