MySQL: you have an error near here.
Me: What’s the error?
MySQL: It’s near here.
Me: You’re not going to tell me what the error is? Okay, near where? Here?
MySQL: warmer… warmer…
Oracle: You have this error in line 1
User: Hey, no, there isn’t anything to cause this error in line 1
Oracle: I’m telling you, it’s in line 1
User: Hum… How many lines are in my 10 lines query?
Oracle: 1
One of the reasons i started learning rust was bc of how easy it is to get into it, or at least that’s how it felt for me. It wasn’t until a few months into consistently writing that I started to encounter things that I didn’t understand.
The good thing about Rust is that if you have no idea of any problem in your code, it very likely because your code is ok.
On C++ things are different.
Rust is nice, unless you have a traits compilation error from a 3rd party library using types that are more difficult to write than C++ templates.
yeah as nice as it is what you can achieve with trait-bounds there are definitely trade-offs, being compile time and error messages, and sometimes mental complexity, understanding what the trait-bounds exactly mean… I really hope, that this area gets improvement on at least the error-messages and compile time (incremental cached type-checking via something like salsa)
I much prefer getting told of that it doesn’t match a trait than get 600 characters of which the majority is implementation detail of global allocators und from what exactly the string is derived.
Depends on what trait bound error messages you have had yet, I had 1000 lines long already, where it’s not obvious at all what is meant (and is often a very simple fix). But I’m sure this will get better over time, there’s already a bigger ongoing redesign of the type system solver, so maybe it will be integrated into stable rust soon.
Way too short to be a real C++ error. Needs a few more pages of template gibberish.
Template<Instatiation::_1,_2,_3, Instatiation2::_1, _2<closure::wrapped<_1[map::closure_inner]>>, Outer<Inner<Wrapper<float>>>>::static_wrapper<std::map<auto>, spirit::parser::lever<int, std::array<int>>::fuck_you
Syntax error: unmatched thing in thing from std::nonstd::__map<_Cyrillic, _$$$dollars>const basic_string< epic_mystery,mongoose_traits<char>, __default_alloc_<casual_Fridays = maybe>>
(from James Mickens’ The Night Watch, highly recommended with his other essays: https://mickens.seas.harvard.edu/wisdom-james-mickens)
C just shrugs and says “Seg Fault.”
Probably forgot a semicolon
This joke is never funny; Forgetting a semicolon in c results in compile time errors, not runtime errors
Yeah, but which one i cooler?
Rust because having a package manager is important.
Even C has a package manager
Sounds like Rust propaganda to me >:(
Tbf, you have to be pretty far with Rust to get to a point where Rust’s compiler errors stop helping you (at least, as far as I’ve seen). After that, it’s pretty much the same
Yep use a little bit more deeply cascaded generic rust code with a lot of fancy trait-bounds and error messages will explode and be similar as C++ (though to be fair they are still likely way more helpful than C++ template based error messages). Really hope that the compiler/error devs will improve in this area