Remix.run Logo
nicoburns 3 hours ago

> Rust also hides allocation.

Does it? In Rust you allocate by calling a function. That's exactly the same as C. Are there any langauges that don't allow you to hide allocation behind a function call?

> So what you say is definitely true if you do an allocation heavy, heap fragmenting, RAII style of programming.

I don't think Rust encourages lots of small allocations. Most of the Rust code I work with does a lot of arena allocation (using crates like https://github.com/orlp/slotmap) and reusing of allocations. And for that matter a lot of stack allocation avoiding the heap entirely. And it's borrowing system is fantastic for working with shared pointers to data without having to worry that something might accidentally overwrite it.

> You're also completely glossing over the incredible complexity you get in all thee weird intersection of rust features.

I don't really buy that Rust is complex. More complex than C I suppose (but C just pushes all the complexity into making you write 5x more application code), but closer to something like Java than something like C++.

int_19h 3 hours ago | parent [-]

It's significantly more complex than Java due to the borrow checker and lifetimes in generics.

koakuma-chan 2 hours ago | parent [-]

I don't think Rust is all that complex. On the other hand Java has many obscure features like serialVersionUID. For that matter, even fucking JavaScript is more complex than Rust with its var vs let, == vs ===, how, e.g., an empty array is false, parsing Date, how to make a "deep copy," etc, and TypeScript's type system can run Doom.