Редактировать: Вопрос в качестве названия, измененного Shepmaster Добавлено больше деталей в ситуацию.
Я хочу иметь доступ к объекту после черты в разных потоках, который хранится в целом в структуре. Поскольку я портирую свой код с другого языка, чтобы попытаться изучить ржавчину, я все еще немного новичок в этом языке.
Изначально я думал, что у меня есть структура, похожая на следующую, скомпилированная отлично:
struct MyStruct<T : MyTrait> {
my_object : Arc<Mutex<T>>
}
Однако в конечном итоге мне нужно сохранить ссылку на него, так как он будет храниться в нескольких потоках. Я понимаю, что мне нужно использовать время жизни, чтобы заставить это работать, поэтому я получил следующее:
struct MyStruct<'a, T : MyTrait> {
my_object : &' Arc<Mutex<T>>
}
Я получаю ошибку:
ошибка [E0309]: тип параметра T
может прожить недостаточно долго
- help: рассмотрите возможность добавления явной границы времени жизни T: 'a
...
... чтобы ссылочный тип &'a std::sync::Arc<std::sync::Mutex<T>>
не переживал данные, на которые он указывает
my_object: & 'Arc >
Ошибка подразумевает, что я должен указать время жизни для моего универсального, однако у меня уже есть черта для моего типа. Итак, в конечном итоге, как я могу указать, что универсальный тип должен следовать за чертой и иметь срок службы?