Curious, since I haven't been following closely - is Tokio fit for both IO and CPU-bound work, or do you need to break into threads?
I use Golang daily, and have been spoiled by the opinionated approach taken to solving both CPU and IO-bound workloads.