> Ну это то я знаю. Я к тому что до появления асинк
> авейта тонкио предоставлял своё особое апи.Если я правильно понимаю о чём ты, то он точно так же продолжает предоставлять своё особое апи. Всякие там tokio::{net, fs, io, ...}.
> Я не сильно в курсе как это работает в расте. С появлением
> амтнк авейта можно же использовать асинхронные версии функций из стандартной библиотеки,
> сетевых и прочего ввода вывода?
В стандартной библиотеке нет async функций. Их не реализовать без рантайма. Async функция должна вернуть Future, трейт Future описан в std, но чтобы вернуть Future нам нужен конструктор, чтобы создать инстанс Future, то есть одного трейта мало. А реализация трейта Future и, в частности, реализация конструктора -- это задача рантайма. В std есть примитивные реализации Future для некоторых типов, но примитивные, в которых заведомо не надо переключать контексты выполнения, или что там в рантайме надо делать, чтобы переключиться с выполнения одной асинхронной задачи на выполнение другой.
Рантайм для async в расте, это что-то типа главного цикла в apache, занятого вызовами select, и диспатчем управления туда, где собственно идёт работа с данными вычитанными из сокетов. Если у нас нет реализации этого главного цикла, то мы не можем с ним взаимодействовать. То есть мы вообще ничего не можем написать. Вот есть у нас сокет, мы можем из него аккуратно попробовать прочитать что-нибудь, так чтобы ядро не заблокировало бы наш поток выполнения. Но как? Неблокирующий режим файловому дескриптору повесить? Или может тщательно следить за возвращаемым значением, чтобы читать ровно до того момента, когда следующий вызов приведёт к блокировке, и останавливаться тогда? Непонятно, потому что разные рантаймы могут по-разному заходить к этому вопросу. Кто-нибудь вообще может попытаться сделать это через signal-driven модель. И в каждом случае читать из файлового дескриптора придётся по-разному.