Другой вариант - делать do_send а оттуда тоже делать do_send обратно
Вот никогда не понимал такого подхода. Я такое начал встречать часто в js, когда при отправке события передавался еще context, в который если что, можно было послать сообщение обратно... Зачем?))) Если можно архитектуру изначально продумать, и тогда контекстами не зачем кидаться будет 😃
Когда я делаю ctx.spawn(future) то кто будет ее поллить?
Тут уже вы начинаете говорить немного сложнее, чем мои познания в Rust ))) Когда я лазил внутрь для выяснения подобных вещей, то видел, что всем внутри заправляет системы актикса, и сама система акторов, когда вы трейт реализовываете, там какая-то магия происходит, простите - не объясню 😄
Ну это один из вариантов. Так же всегда есть возможность продумать архитектуру не связанную, когда у вас есть A, B и C объект, и структура отсылки событий A -> B -> C -> A