2013-08-28 3 views
2

Я немного в тупике. Я хочу, чтобы следующий код прошел.Вложенные времена жизни

enum Source<'self> { 
    String(&'self str), 
    ReaderUtil(&'self ReaderUtil) 
} 

pub struct Matrix<'self> { 
     source: &'self Source 
} 

fn main() { 

} 

Я начал с только перечислимого, но потому, что мне нужно использовать & указатели, я должен был дать ему всю жизнь. Проблема возникла, когда я добавил это перечисление в другую структуру. Я знаю, что я не могу дать другой ресурс структуры, чем 'self, но он дает мне ошибку на всю жизнь, говоря, что анонимные времена жизни не разрешены в Source (это то же самое, что я не добавлял никаких жизней).

ответ

4
enum Source<'self> { 
    String(&'self str), 
    ReaderUtil(&'self ReaderUtil) 
} 

pub struct Matrix<'self> { 
     source: &'self Source<'self> 
} 

fn main() { 

} 

Вы указали свой источник перечисления с параметром времени жизни, enum Source<'self>. Это означает, что вам также нужно объявить срок службы Source in Matrix.

+0

Помещенный более явно, так же, как с обобщениями типа, как 'Foo ' где 'Foo' не является допустимым типом без' ',' Source' не является допустимым типом без указания его срока службы, такие как 'Источник <'self> '. –

Смежные вопросы