Как бы так сказать, я не говорю про конкретно tokio, я скорее про общее впечатление от того что приходится делать чтобы что-то написать.
например хотим мы вебсокеты. Понятное желание, идём на crates/io и смотрим что есть, есть ws который за собой тащит токио. Стопэ пацантрэ, я не просил мне никакого рантайма, мне надо обёртку над сокетом в которую я могу сказать ws://*** и получить сейт-мойшину, которую я уже сам буду read и write. Но нет, для этого надо искать невнятное нечто от кого-то там на второй странице поиска.
Ладно, пробуем открыть сокет. В std он будет блокирующий без уариантов. Чтобы получить варианты надо что? правильно, пойти на
crates.io и там взять mio, который обёртка над этими самыми poll/select. Обёрточка кстати тоже той ещё дурацкости. А уж если unix сокет нужен, то тут пацан сорян, мы тебе не поможем, мы ж себе не враги такое делать. вон тебе обёртка над open как-нибудь сам справься, а?
вздыхаем и пробуем скрестить ужа с ежом, послушать udp сокет обработать то что оттуда пришло и впилить в вебсокет. И тут понимаем что асинки тут нахер не упёрлись от слова вообще, но с помощью имеющихся абсракций сделать конечный автомат на non-block read, ну вот как-то больно. Сильно больнее чем на практически любом другом языке который я знаю. Даже больнее чем на голом си, просто потому что ты пишешь ровно то же самое что на си, только в синтаксисе раста.
а на это всё кладём маленькую вишенку - зачастую E который тебе нахер не упало обрабатывать вот прям вот здесь, не пробросить, потому что E и E они разные и не сводятся к std:Error. А from не реализовать, потому что ни тот ни другой E не твои. И сидишь такой, в одном полужопии пики точёны, в другом хуи дрочёны