Yeah, semicolons are ugly anyway and they’d ruin the beautiful expression of your code.
On a more serious note, does rust suffer some of the same issues as JavaScript when it comes to omitting semicolons?
Do not expect to find anything like Javascript craziness on other languages. Or you’ll be severely disappointed.
There are plenty of languages with warts at least as bad as JavaScript’s. Bash, PHP, C, even relatively sane languages like Python still have huge issues like implicit variable declaration.
JS and PHP are by themselves in a special ring of hell.
Bash is a bigger one. Luckily there’s nushell
for (const item in items) { }
!=
for (const item of items) { }
Still better than
for _, item in ipairs(items)
No…?
Nope. In Rust, a semicolon denotes a statement while a lack of semicolon is an expression so you can’t just omit them at will. This does lead to cool things though like if/else blocks being able to produce values if they end in an expression. But the expression type is checked so you’re less likely to make a mistake. You can see an example here: https://doc.rust-lang.org/rust-by-example/flow_control/if_else.html
In JavaScript I never skip semicolons because I’ve seen those subtle bugs.
POV: your project manager went in an “cleaned” it all up by removing them - your (sic) welcome! 😜
Now do it without using commas
I’ve did it https://programming.dev/post/12516136
Challenge accepted! If I won’t procrastinate from this procrastinating, tomorrow will be a version 2 without commas!
Finally, pure functional rust.
Neat FP style. Pretty verbose though. Someone should invent a terser syntax so you don’t need to write
do_two_things
everywhere. It’s a common operation so maybe it could even be a single character.;
is just a monad after allIf you know about rust you know it’s a programmable programming language, meaning that you can make macros. There could be a macro that would do that but 1. Macros is rust code to write rust code so they have the complexity of rust squared 2. I said to myself the only macros I will allow myself to use in this challenge is println and allow
Like a semicolon? No, too boring. What about >>=
Isn’t this basically how lisp works?
Rust’s semicolon means something like “There’s nothing to see here! Move along! Move along!”, so yeah, you don’t actually need any.
After programming in Go for nearly a decade, the idea of going back to needing semicolons brings me pain. Rust seems cool, but semicolons 🤢
As you can see, rust allows you to not put semicolons at the end of code blocks. The presence of semicolons is not a language killer. It’s a very hard language, but its worth it.
The presence of semicolons is not a language killer.
I’m not saying it is. But every time I have to work in a language that requires semicolons I’m constantly forgetting them and constantly reminded of how nice it is to not have to care in Go.
I agree. Semicolons are a small “tradeoff” (personally not for me) for such a great language.
What’s the font?
JetBrainsMono Nerd Font
Would you rather have semicolons or significant newlines?
Semicolons. Statement’s can be written in multiple lines such as
rust io::stdin(&mut foo) .unwrap()
. Idk if it would work if the newlines were significant. Also when I paste something, it could be ready hard for the formatter to format it.
You can replace
return foo
with justfoo
.Not here, because it’s being used as a function argument.
Oh wow. I hate this lol
Well you have a variable
foo
being mutated. Maybe that’s what they’re for?