Парадигма отправки / получения в Rust - PullRequest
2 голосов
/ 05 октября 2019

Это сценарий с двумя слоями (объектами) на рисунке:

Уровень 0: сеть, Уровень 1: процессор. Процессор может отправлять события во внешний мир через сетевой объект. С другой стороны, сетевой объект перенаправляет события, полученные из внешнего мира, на объект процессора.

Это базовый поток в C / C ++, который реализовал это несколько раз:

  • Сетевой объект предоставляет API отправки

  • Он также предоставляет API для регистрации обработчика получения. Процессор будет использовать это для установки метода обработки и т. Д.

Наряду с незарегистрированным интерфейсом, позволяющим аккуратно разбирать объекты.

Но это выглядит довольно грязно вРжавчина, из-за проверок срока службы и других причин. Например, создание замыкания, которое захватывает & mut self, невозможно. Я имею в виду некоторые способы (например, вставлять вещи в Arc<Mutex<..>>, использовать очереди сообщений между объектами и т. Д.). Какой самый лучший / самый чистый способ сделать это в Rust?

Спасибо.

...