3 ms·
I don't really understand when you say that spawning async would be just like a green thread (goroutine). I thought they were fundamentally different.
by imetatroll 3y ago
I don't really understand when you say that spawning async would be just like a green thread (goroutine). I thought they were fundamentally different.
- insanitybit 3y agoThey aren't different. They are the same. The only difference is that in Go the `yield` points are implicit (the compiler inserts them) whereas in Rust they are explicit (.await). Otherwise they both schedule a task to be executed with the implicit runtime - in Rust that may be tokio or something else, in Go that would be the Go runtime.
- klabb3 3y agoI would say they function similarly. There are quite a few internal differences. The main benefit of Rust is that futures are just regular types and don’t need a stack when idle. And the main benefit of Go is that there is only one type of function, so no coloring. > they both schedule a task to be executed with the implicit runtime To be pedantic, in rust the runtime is referenced with a global or thread-local variable, but it’s still explicit. This means crate authors can’t spawn tasks without depending on a runtime… unless there’s been recent developments.
- insanitybit 3y agoSure, their implementation differs in all sorts of ways. But for the purposes of this conversation, with regards to scheduling a future without having to manually pin it up into a your call graph, they are the same. > but it’s still explicit. I guess it just comes down to your definition of explicit. There's a dependency, but from a caller's perspective it's implicit. It doesn't matter though, I think the point is clear enough.