Everybody's so Creative

56 points by weinzierl


schneems

Rust REALLY doesn’t like you hiding details. But libraries are all about abstracting away implementation details.

Something not mentioned in this post, but it’s related: Breaking changes, specifically interfaces. For all the safety rust gives you, library authors tend to be extremely conservative about changing interfaces. Some of this over-abstraction is guarding against internal changes leaking out to user breaking changes.

If you want simple interfaces (reduced abstraction), you need to be willing to accommodate more breaking changes from libraries. And as a community we need to find a balance point between “abstract enough” and “stable enough” and “clear enough.”

untitaker

this is nowadays a fairly popular sentiment but it'd be more productive moving forward to give concrete examples of useless traits and what you'd replace them with. I found that half of the time when I am trying to think about how to simplify an API like that, I end up with very baroque early-Java-style patterns and optionally a prohibitive amount of trait objects. I'm sure somebody would complain about that too when some code isn't inlined properly.