One thing that I wish were, at least, explored is how make Rust simpler.
I bet Rust syntax and some complex and divergents ways of typing are major implications on how Rust compile (you can see why, when comparing to Pascal). Also, modules, macros must be, IMHO, major faults here.
The other things: San, Quote, Serde? That stuff must be bring home. At minimum, the bare traits and some basic machinery.
Other thing: The orphan rule means exist a lot of places with redundant code to tie types that cause extra compilation efforts (because n-crates must pull n-crates to impl traits!).
- Exist different ways to annotate traits (impl and the long way)
- Alias work, but not everywhere
- The module system is too complicated
- You have pub and pub(crate). The second must have been the default for types on a crate because the way how things are because modules
- The trait system is full of "but" that make it not as simple to use in practice (ej: Is too common traits require extra work because this or that rule in THIS case must be appeased, and also, is where is more obvious things are in disconnect with the rest of the lang)
> - The trait system is full of "but" that make it not as simple to use in practice (ej: Is too common traits require extra work because this or that rule in THIS case must be appeased, and also, is where is more obvious things are in disconnect with the rest of the lang)
Can you give a concrete example of what you mean here? I don't doubt that you have a legitimate criticism, but it's phrased in a way that I genuinely am not able to understand
This is a great example of where the way people use the word "simple" comes along with lots of caveats and mean different things to each one of us. Increasing simplicity in the user experience (by removing seemingly arbitrary restrictions to the type system) mean increasing the complexity of the implementation. We've already seen that with match ergonomics, the borrow checker and async: "adding complexity" results in "a simpler to use" language.
I bet Rust syntax and some complex and divergents ways of typing are major implications on how Rust compile (you can see why, when comparing to Pascal). Also, modules, macros must be, IMHO, major faults here.
The other things: San, Quote, Serde? That stuff must be bring home. At minimum, the bare traits and some basic machinery.
Other thing: The orphan rule means exist a lot of places with redundant code to tie types that cause extra compilation efforts (because n-crates must pull n-crates to impl traits!).