<html><head></head><body>Rust has a few syntactic ways to accomplish the same thing, though. I think match expressions are used for the equivalent of conditionals that carry the condition value into the body of the expression, and all blocks return the result of the last statement, so you can do things like:<br>
<br>
let mut x;<br>
while { x = foo(); x } {<br>
 bar(x);<br>
}<br>
<br>
I don't know if that's idiomatic Rust (and I wrote it on a phone and didn't check to be sure it compiles), but it does more or less solve the problem of assignment in a control flow condition.<br><br><div class="gmail_quote">On April 27, 2018 12:58:16 AM UTC, Steven D'Aprano <steve@pearwood.info> wrote:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">On Thu, Apr 26, 2018 at 09:36:48AM -0700, Mike Miller wrote:<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> However, there were two good questions in this message which I haven't seen <br> addressed yet:<br> <br>     - How are other modern languages solving this issue?<br>     - How does this new construct intersect with typing functionality?<br></blockquote><br>What counts as a modern language? Less than five years old? Less than <br>fifty years old? Are Javascript, Ruby and R modern? They all support <br>assignment as expressions.<br><br>I think Koitlin, Rust and Go prohibit assignment as expressions.<br><br>Swift assignment evaluates as Void (equivalent to None in Python, I <br>guess), so you can use assignment in an expression but it returns <br>nothing and only operates by side-effect.<br><br>As far as type hints go, I think that if you need explicit type hints in <br>the middle of an expression, it's a bad idea and you ought to pull it <br>out as a separate statement. That applies regardless of whether that <br>expression involves binding or not.<br><br></pre></blockquote></div></body></html>