Let me be more precise then. Goroutines enable a fan out pattern in which each task, even small ones, is a separate asynchronous routine. Tasks fan out from a coordinator routine and their results fan back in:<p><a href="https:&#x2F;&#x2F;talks.golang.org&#x2F;2012&#x2F;concurrency.slide#46" rel="nofollow">https:&#x2F;&#x2F;talks.golang.org&#x2F;2012&#x2F;concurrency.slide#46</a><p>This is great for a couple reasons:<p>It&#x27;s automatically concurrent without explicit pooling and locking.<p>The code flow remains sequential. No callback hell!<p>It reduces concurrency errors. The locking pattern is naturally acyclic! Nothing races!<p>Ah, but Go has a big runtime, you say! We can&#x27;t have that in Rust! Well, here&#x27;s the same thing in C and in C++:<p><a href="http:&#x2F;&#x2F;libmill.org&#x2F;tutorial.html" rel="nofollow">http:&#x2F;&#x2F;libmill.org&#x2F;tutorial.html</a><p><a href="http:&#x2F;&#x2F;www.boost.org&#x2F;doc&#x2F;libs&#x2F;1_59_0&#x2F;libs&#x2F;coroutine2&#x2F;doc&#x2F;html&#x2F;coroutine2&#x2F;motivation.html" rel="nofollow">http:&#x2F;&#x2F;www.boost.org&#x2F;doc&#x2F;libs&#x2F;1_59_0&#x2F;libs&#x2F;coroutine2&#x2F;doc&#x2F;htm...</a><p>Coroutines are a wonderful tool for building concurrent applications, and I dearly hope we get them in Rust.