3 ms·
There isn't much. Rust has deprecated some mistakes (like Error::cause). The editions mechanism allowed fixing some issues (like unintuitive module paths). htt
by pornel 7y ago
There isn't much. Rust has deprecated some mistakes (like Error::cause). The editions mechanism allowed fixing some issues (like unintuitive module paths).
https://github.com/rust-lang/rust/issues?q=label%3Arust-2-breakage-wishlist https://github.com/rust-lang/rust/issues?q=label%3Arust-2-br...
• Struct literal syntax should have used C99 syntax. The language uses `name:type` everywhere except struct literals which use `name:value`, and this gets in the way of adding new syntax (type ascriptions).
• `Box` is semi-magical. Maybe it could have been a regular struct. Or maybe magical all the way to allow placement new and destructuring.
• Types are in borrowed, owned-fixed-size and owned-growable variants, but naming of them is a bit ad-hoc. There's str/String, but Path/PathBuf (instead of e.g. String/StringBuf or path/Path).
• Split between libcore and libstd is awkward to manage and not a good fit for WASM. It could have been one libstd with feature toggles (this might still happen).
• Some people think split between Eq and PartialEq is an overkill, and just makes floats annoying.
There are things that are still unsolved in Rust, like umovable types and self-referential structs. But it's hard to say they're a mistake — as far as we know, they're a necessary limitation to make other useful features work.
- steveklabnik 7y agoBox being non-magical might still happen too. (I disagree personally on struct literal syntax but you're not alone, it's true.)
- alvarelle 7y agoWhat's magic in Box?
- pornel 7y agoDereferencing: https://manishearth.github.io/blog/2017/01/10/rust-tidbits-box-is-special/ https://manishearth.github.io/blog/2017/01/10/rust-tidbits-b...