2013-08-28 23 views
2

我有點難住。我想要下面的代碼通過。嵌套生活時間

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

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

fn main() { 

} 

我開始只是枚舉,但後來因爲我需要使用&指針,我不得不給它一輩子。當我將枚舉添加到另一個結構時出現問題。我知道我不能給結構比'self更多的生命,但它給我一生的錯誤,說源中匿名生命時間是不允許的(這與我沒有添加任何生命週期一樣)。

回答

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

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

fn main() { 

} 

你宣佈你的枚舉Source使用生命週期參數enum Source<'self>。這意味着您還必須聲明Matrix中的源生命週期。

+0

更明確地說,就像'Foo '這樣的類型泛型,其中'Foo'不是沒有''的有效類型,'Source'不是沒有指定其生存期的有效類型,例如'Source <'self> '。 –