So a while back I decided the C++ project I'm working on should really be using fixed size integers. I settled for changing
>typedef unsigned uint
to
>typedef uint_fast32_t uint
I can't remember if that type actually guarantees a size of 32, but it didn't work with GCC regardless, uint was already typedefed and I couldn't find any way to change it.
What most people really want is i32 and u32, and this minor design flaw (imho) was enough to give me the itch we all get occasionally to find a replacement for C++.
So I'm reading through the Rust documentation and decided I'd enjoy posting my comments here and seeing what people have to say, since I don't have any programming friends.
> Cargo qua build system
THANK. FUCKING. GOD. Writing page long build scripts really is a waste of time.
> Cargo qua directory convention
Also seems pretty nifty, but I'm not completely sold yet.
> static linking by default
You can fuck right off with this one. That's some stupid shit right there.
> Bounds checking
At least in the basic documentation, it's not nearly clear enough how much of this is kept in the release executable, or how to control whether it's on or off. I like the idea, but defer judgement until I understand exactly what it's doing.
> scalar typenames
Once again: THANK.FUCKING.GOD.
> declaration syntax
Seems verbose. I prefer mutable default to constant default.
> Use of semicolon for expression vs. statement
I like it. Seems a tad clearer.
> Optional return keyword
Very obnoxious and hurts readability.
> Parens not needed around if condition
Awesome, less pointless typing.
> Macros end with !
This might be my favorite thing about the whole language. Macros are awesome for writing concise, DRY, code, but not marking them explicitly make creating refactoring tools harder, and hurts readability.
> == for equality comparison
WHY??? FUCKING WHY??? Am I the only one who still constantly writes "if x = y" on accident even after years of programming?