Гетерогенные списки в Rust и их суперсилы
Место и время будет назначено в окончательной программе после 20.11
Антон Михайлов
Мой Telegram-канал: https://t.me/dereference_pointer_there
Антон Михайлов
Мой Telegram-канал: t.me/dereference_pointer_there
ТЕЗИСЫ

Одна из претензий к статически типизированным языкам часто состоит в том, что в них трудно манипулировать данными, которые являются просто некими наборами полей. Не смотря на то, что эта претензия ортогональна статичности системы типов, она часто справедлива на практике, поскольку большинство применяемых на практике языков программирования (включая Rust) имеют номинативную, а не структурную систему типов. Данный доклад демонстрирует, как, использовав в качестве промежуточной абстракции гетерогенные списки - вещь, обычно применяемая в функциональном программировании - можно покрыть возможности, которые могли бы предоставить отсутствующие в Rust фичи: структурная типизация и вариадические дженерики. В частности, как можно преобразовывать структуры со схожими наборами полей из одной в другую без бойлерплейта, как вынимать произвольные поля из JSON, не выписывая вручную по типу на каждую комбинацию, и как объединять вместе типы с общим обобщённым поведением так, чтобы выбирать нужный по типу требуемого результата - всё типобезопасно, без бойлерплейта, без unsafe и с нулевой стоимостью в рантайме.

Одна из претензий к статически типизированным языкам часто состоит в том, что в них трудно манипулировать данными, которые являются просто некими наборами полей. Не смотря на то, что эта претензия ортогональна статичности системы типов, она часто справедлива на практике, поскольку большинство применяемых на практике языков программирования (включая Rust) имеют номинативную, а не структурную систему типов. Данный доклад демонстрирует, как, использовав в качестве промежуточной абстракции гетерогенные списки - вещь, обычно применяемая в функциональном программировании - можно покрыть возможности, которые могли бы предоставить отсутствующие в Rust фичи: структурная типизация и вариадические дженерики. В частности, как можно преобразовывать структуры со схожими наборами полей из одной в другую без бойлерплейта, как вынимать произвольные поля из JSON, не выписывая вручную по типу на каждую комбинацию, и как объединять вместе типы с общим обобщённым поведением так, чтобы выбирать нужный по типу требуемого результата - всё типобезопасно, без бойлерплейта, без unsafe и с нулевой стоимостью в рантайме.

ПОДПИСАТЬСЯ НА НОВОСТИ RUSTCON
Обещаем не спамить, будем присылать только важные новости о конференции.
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Поделиться страницей в соцсетях