SPIKE411: Hezká variace na téma "problém X je složitý a Rust mě ho nutí explicitně řešit". Všechny funkce jsou dvoubarevné, protože mít všechny funkcnce asynchronní je
zbytečně drahé. Ale zase je to pohodlné, jak v tom zmiňovaném Go, kde se Google rozhodl ten problém vyřešit jedním konkrétním způsobem (channels) a tím ten problém "skrýt". Je to pohodlné, ale cena za to je garbage collector a nemožnost to udělat jinak. Trochu jako se Rust rozhodl řešit problémy s pamětí Borrow Checkerem a neumožnuje tak všechno to, co třeba C++. Podle mě je dobře, že to Rust dělá explicitně (jako všechno) a nutí programátora vidět složitost věci a nějak se k tomu postavit. Možná můžeme mít nápady jak vylepšit syntax (nicméně už post `.await`je lepší než pre), ale primární je, jak zmiňuje ten blog post:
"Develop a deep understanding of how these abstractions actually work"
Protože zkušenost je taková, že psát dobře asynchronní kód je extrémně složité a hluboce znát co to dělá je jediný způsob jak to zlvádnout. Zkopírovat odněkud příklad z Go nebo všude nahodit Arc aby se to zkompilovalo je asi možné, ale při prvním problému a potřebě debugovat do toho člověk bude zírat a nebude tušit, která bije.