4 ms·
> There is no sane way to make async optional in a library and reuse code. FWIW, there's an effort to do exactly that, but because it will require language lev
by estebank 4y ago
> There is no sane way to make async optional in a library and reuse code.
FWIW, there's an effort to do exactly that, but because it will require language level changes and it is just on the drawing board phase, it will likely be a while before it can be widely used.
The "optionality" of `async` while sharing code also applies for `const` and mutability (why do we need `Deref` and `DerefMut`?). Finding a solution that can work for these three (and maybe others?) parts of the language will be a welcome improvement.
- api 4y agoGreat to hear! That's really the solution. Rust async code can be a bit challenging until you get it, but I can't think of a way to make it that much simpler without sacrificing the whole "systems programming language" concept or support for embedded. The only good alternative is Go-like fibers and that requires a fat runtime. We use both Rust and Go at ZeroTier and find that they both have their own niches. (We are slowly moving ZeroTier from C++ to Rust to use a more modern and more importantly safe language.)
- mikevm 4y agoWhere do you use Go?
- api 4y agoBackend to my.zerotier.com and internal analytics code.
- mikevm 4y agoDo you think that was the right choice, or would you have written that in Rust if you were starting today?
- api 4y agoGo is great for backend stuff like that. If we rewrote it from scratch today we might consider Rust though just to have only one language in the house... but Go is really good for that case. We are using Rust for the ZeroTier network hypervisor and core system service though because that's systems-level software that is performance-critical, needs to fit on small-ish devices, and needs deterministic performance among other things. They're really different languages for different niches. Rust is C++ 2.0. Go is fast compiled Python with a cleaner design. (Python is the best niche comparison I've found for Go.)
- mikevm 4y agoVery interesting! Thanks for the answers! :)
- cercatrova 4y ago> FWIW, there's an effort to do exactly that Could you link where?
- estebank 4y agohttps://hackmd.io/Aw2L3VmPQsm0ANC_XMughQ https://hackmd.io/Aw2L3VmPQsm0ANC_XMughQ