Привет! Можно посоветоваться по организации архитектуры библиотеки с фьючерсами?
Задача такая. Есть некий объект Factory, который создает некие экзампляры Instance, связанные с Factory. Инстансы создаются асинхронно. При этом инстансы связаны с Factory(используют некоторый стафф из них по ссылкам), и обычно имеют ограниченное время жизни. Также инстансы имеют асинхронные методы, для выполнения некой важной работы.
Мне нужно организовать архитектуру так, чтобы пользователь мог создавать свои собственные имплементации и Factory, и Instance. Кроме того, у обеих сущностей есть некое дефолтное поведение.
У меня что-то такое получилось, организовав Factory и Instance в виде трейтов с лайфтайм-ссылками, ассоциированными типами, и навесив на все это async_trait(а местами выведя дефолтные методы отдельно от трейтов, так как async_trait не справился с резолвом лайвтайм-границ как надо). Но это все получилось очень-очень громоздко. Как это можно сделать менее громоздко?