Ultimately I've just been more productive in Go for the time being, but I remember definitely see the potential down the road for great things.
Has async/await permeated the ecosystem? Is the book more fleshed out?
Ultimately I've just been more productive in Go for the time being, but I remember definitely see the potential down the road for great things.
Has async/await permeated the ecosystem? Is the book more fleshed out?
For docs, there are some now and I expect it to improve a lot throughout the year.
We also just posted mini-redis as a larger "real world" example: https://github.com/tokio-rs/mini-redis
https://journal.stuffwithstuff.com/2015/02/01/what-color-is-...
The point is that "colour" is introduced to make a meaningful distinction in order to achieve a desirable property. He's enamored by Go which erases this distinction, but it does so by giving up nearly all of the benefits of the event-driven model: very small captured state for resuming the continuation.
The argument is the reverse: it's too hard to explicitly manage side effects, so we should make our functions implicitly, pervasively side-effecting. E.g. allowing any function to throw an exception without declaring this in their signature is widely agreed to be a better approach than Java-style checked exceptions; the argument goes that we should also allow any function to be async without declaring this in its signature.
(I think there's some merit to the argument in languages that aren't powerful enough to express functions that are polymorphic over async-ness. Personally I use languages with higher-kinded types and then you get the best of both worlds: you have an explicit distinction between async and not, but you can write functions that work with both)
In Rust you can easily call an "async colored" function from a "sync colored" one by running it to completion with the executor of your choice. With that you can prevent async bleeding all over your codebase.