Swift and Go don't have either. Neither does Kotlin. The difference is that Rust is an expression language (much like ML), and the semicolon determines whether the resulting expression is returned or thrown away. OCaml needs semicolons when you're doing imperative programming too.
Re:Rust Cookbook
by johncolanduoni on Thursday February 11, 2021 @10:47AM
(#26102811)
Swift, Go, and Kotlin all take newlines into account. I guess one could have a definition of “significant whitespace” that excludes that but in any case I strongly suspect that’s what they were referring to.
yes, but I believe they support semicolons as a statement separator on the same line
JavaScript messed it up, but Python did it well. A newline is a statement separator, unless it's e.g. between parentheses where a statement separator wouldn't make sense. Unlike JavaScript, that means you don't have to look at the next line to figure out whether the statement continues.
JavaScript assumes a newline doesn't end a statement, until proven otherwise. Python assumes it does end a statement unless it very clearly can't.
It's independent from Python's other significant whitespace, so you could use it in a more "C-like" syntax.
But it wouldn't be a good fit for Rust. In Rust, leaving the semicolon off the final statement in a block already changes its meaning, so that would become ambiguous. It also uses method chaining syntax a great deal more than Python, which is a bit awkward because you have to wrap the expression in parentheses (though autoformatting helps). And of course it would break most existing code.
Go doesn't have either: https://play.golang.org/
Ah, but it does. Statements are separated by newlines. That is the same as significant whitespace (or a statement separator; you can interpret it either way).
- A statement separator (semicolons)
- Significant whitespace
Otherwise parsing the language is very likely ambiguous, e.g JavaScript [1] [2].
[1] https://flaviocopes.com/javascript-automatic-semicolon-inser...
[2] https://medium.com/better-programming/you-might-need-those-s...