Возможно ли иметь определение структуры с универсальным типом, где тип является как типом черты, так и временем жизни? - PullRequest
0 голосов
/ 07 ноября 2018

Редактировать: Вопрос в качестве названия, измененного 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 >

Ошибка подразумевает, что я должен указать время жизни для моего универсального, однако у меня уже есть черта для моего типа. Итак, в конечном итоге, как я могу указать, что универсальный тип должен следовать за чертой и иметь срок службы?

1 Ответ

0 голосов
/ 07 ноября 2018

В конечном счете, как я могу указать, что универсальный тип должен следовать за чертой и иметь время жизни?

Точно так же, как вы бы указали несколько черт: добавьте их с помощью +. То есть T : MyTrait + 'a

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...