Пишем простой веб сервис на языке программирования Rust
• оригинал: Daniel Welch • перевод: Александр Андреев • обучение • поддержите на Patreon
Я новичок в языке Rust, но он быстро становится моим любимым языком программирования. Хотя написание небольших проектов на Rust обычно менее эргономично и занимает больше времени (по крайней мере, со мной за рулём), это бросает вызов тому, как я думаю о дизайне программы. Мои бои с компилятором становятся менее частыми, после того как я узнаю что-то новое.
Я работаю над дополнением zigbee2mqtt Hass.io,
это расширение Домашний помощник
для платформы домашней автоматизации. Надстройка опирается на библиотеку
zigbee2mqtt
. zigbee2mqtt
довольно новый проект,
который быстро развивается и ещё не имеет опубликованных релизов. Дополнения на Hass.io
распространяются в виде Docker-контейнеров и zigbee2mqtt
просто использует самую свежую ветку
master
базовой библиотеки при сборке контейнера. При таком подходе возникла проблема:
когда новые коммиты были перенесены в zigbee2mqtt
, пользователи дополнения не могли
обновиться до последней версии, пока контейнер дополнения не был собран
(что происходит автоматически в Travis CI только тогда, когда коммиты были
перенесены в репозиторий add-on). Мне нужен был способ запускать сборку
на Travis всякий раз, когда библиотека была изменена на Github.
Почему бы не реализовать это на языке Rust?
В этом посте я пройдусь по созданию простого веб-сервиса в Rust с помощью actix-web
,
который принимает входящие сообщения Github webhook
и запускает сборку Travis CI
через Travis API V3
.