Поскольку ваша первая структура имеет ссылку, в которой есть ссылка на другую структуру, вам также необходимо указать время жизни этих детей:
struct AppState<'a> {
services: &'a AppServices<'a>,
}
Детская площадка
Таким образом, вы говорите компилятору, что время жизни AppState
и AppServices
ограничено, поэтому AppServices
члены также имеют время жизни 'a
.
Однако, помимо проблем времени жизни, у вас есть циклическая структура данных. Если вы хотите обмениваться данными между структурами, есть несколько специальных интеллектуальных указателей, таких как Rc
и для многопоточных приложений Arc
.
Вместо совместного использования необработанных указателей структуры вы можете совместно использовать Arc
интеллектуальных указателей и изменять данные с помощью Mutex
, чтобы гарантировать единый доступ для потока.
Решение, которое использует Arc
решить такую проблему циклической структуры данных.