Await in Rust
Reading through comments on async&#x2F;await-related articles, I wonder if I&#x27;m the only person who find the whole concept of async&#x2F;await utterly weird. Specifically I have troubles embracing the need to mark function as &quot;async&quot; – it just doesn&#x27;t make sense to me. Synchronous or asynchronous is something up to the caller to the decide – not to the function itself.<p>Like in real life I can do something synchronously (meaning paying full attention), or I can do the same task asynchronously (watching youtube videos in the background while cooking, for example), but it&#x27;s still up to me. Being &quot;async&quot; is not a property of the &quot;watching youtube&quot; action, it&#x27;s the property of the caller running this action.<p>That&#x27;s the reason why CSP-based concurrency models really works well for me – it&#x27;s just so easy to map mental models of system&#x27;s behaviour from the head directly to the code. You have function&#x2F;process and it&#x27;s up to you how do you run it and&#x2F;or how synchronize with it later.<p>Async&#x2F;await concept so popular in modern languages is totally nuts in this aspect. Maybe it&#x27;s just me, but I find myself adding more accidental complexity to the code just to make async&#x2F;await functions work nicely, especially for simple cases where I don&#x27;t need concurrency at all, but one &quot;async&quot; function creeps in.