Как стать автором
Обновить

Rust и асинхронные функции: как улучшить структуру кода и повысить производительность с помощью абстракций

Время на прочтение26 мин
Количество просмотров2.8K
Всего голосов 19: ↑19 и ↓0+20
Комментарии4

Комментарии 4

Интересно. Только не в начале 2010-x, а в начале 2000-х: класс Deferred из Twisted (Python) - это первый вариант future, который мне встретился.

Сумбурно, без примеров, камень как я догадался в Golang к концу наконец развязка с непонятным результатом. Переписываем одинаковый код из года в год и тянем среду выполнения С. Надо будет еще раз перечитать позже. Я так и не понял в чем мораль? И там и там есть свои проблемы. Какое решение?

Какое решение?

Перечитайте раздел с "maybe(async)"

Я так и не понял в чем мораль?

На мой взгляд, лучше разделять библиотеку на 3 части: общая, async и blocking. Изначально немного больше работы, но потом гораздо проще поддерживать.

Я исхожу из своего опыта работы со Stackless Python3, где те же проблемы. Особенно вот эта:

Но, с добавлением этих функций в язык связана одна проблема: они идентичны СИНИМ функциям, поэтому при вызове их невозможно отличить! При работе нужно опираться на документацию и держать в голове все ЗЕЛЁНЫЕ функции, чтобы ненароком не вызвать их из КРАСНОЙ.

Переписываем одинаковый код из года в год и тянем среду выполнения С.

Что же вы предлагаете? Отказ от FFI будет стоить языку жизни, т.к. придется переписать все популярные библиотеки.

Это стон по отсутствию (и принципиальной невозможности в текущей реализации runtime Rust) call/cc?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий