Zardzewiała dziwność asynchroniczności

Uczę się o async/await w Rust. I to jest śmiesznie zrobione, że "futures" (rustowy odpowiednik promisów) się nie uruchamiają same! bo jak wywołasz funkcję asynchroniczną w JS, to ona zwraca promise i się uruchamia od razu. A w Rust tak nie ma! Nic się nie dzieje. Jak wywołasz funkcję asynchroniczną, to dostajesz "future" (tak jak w JS dostajesz "promise"), ale nic się nie uruchomi samo!

No ale JS daje obietnice bez pokrycia, a Rust to język dla osób odpowiedzialnych, więc samemu trzeba zadbać o swoją przyszłość, tzn. o future. Samemu uruchamiasz w specjalny sposób, bo Rust ma być wydajnym językiem, a zrobienie tak, jak w JS, że gdzieś tam jest odgórnie ustalona pętla eventów, ktora odpala te promisy, byłoby narzutem wydajnościowym, na który nie wszyscy mogą sobie pozwolić.

Jest o tym prezentacja Steve'a Klabnika: The Talk You've Been Await-ing for

No i jest trochę zachodu w tym, żeby to zrobić w czystym Rust, więc powstały biblioteki takie jak Tokio, które to ułatwiają. Chociaż ja i tak najpierw to zrobię samemu, mimo, że to wydaje się dość trudne i dużo będę musiał się douczyć. Ale przynajmniej będę wiedział, jak to działa pod spodem.

Komentarze

Popularne posty z tego bloga

Ściemy z ogłoszeń o pracę

Jak nie sprawdzać wiedzy technicznej: platformy online

Jak zrobić prostą grę w JavaScript?