‹ BackHN Continuity

Thread

Rusty thoughts on "Parse, don't validate"

95 points · 47 comments · ingve

  1. tjadfsaj · · focus · HN ↗
    Nonempty type wrappers are a stark reminder that we are missing out on refinement types.
    1. bunderbunder · · focus · HN ↗
      I was thinking about its implementation, too, and ended up deciding that it was probably a performance optimization.

      `Vec<T>` stores all data on the heap, so getting anything out of it involves a pointer deref and possibly also an array bounds check. This `NonEmpty<T>` type keeps the first element of the list in a location that supports some low-level optimization that might make a significant difference in situations where accessing the first element is much more common than accessing subsequent elements.

    2. andrepd · · focus · HN ↗
      Rust has a proposal for this, in the form of pattern types. It's on nightly, but quite far from being ready for prime time.
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.