String
이 구조체의 "생성자"메서드 내부에서 생성 된 구조체에 Chars
반복자를 할당 할 수 있기를 바랍니다. 어떻게해야합니까?"충분히 오래 살지 않아서"Chars 반복자를 반환 할 수 없습니다.
코드 (run it) :
use std::str::Chars;
fn main() {
let foo = Foo::new();
}
struct Foo<'a> {
chars: Chars<'a>
}
impl<'a> Foo<'a> {
pub fn new() -> Self {
let s = "value".to_string();
Foo { chars: s.chars() }
}
}
오류 :
이error: `s` does not live long enough
--> <anon>:13:22
13 |> Foo { chars: s.chars() }
|> ^
note: reference must be valid for the lifetime 'a as defined on the block at 11:25...
--> <anon>:11:26
11 |> pub fn new() -> Self {
|> ^
note: ...but borrowed value is only valid for the block suffix following statement 0 at 12:36
--> <anon>:12:37
12 |> let s = "value".to_string();
|>
(내 실제 코드에서 생성자는 파일에서 텍스트를 읽습니다) 당신은 할 수 없습니다
[** 84 개의 질문에 녹슬 었습니다 **] (http://stackoverflow.com/search?q=%5Brust%5D+%22does+not+live+long+enough%22+is%3Aq)와 정확한 문자열''오래 살지 않습니다'. 18k + 평판을 가진 스택 오버플로 사용자는 새로운 질문에 대한 좋은 예를 설정하기 위해 [질문하기 전에 수행 한 리서치를 보여 주어야합니다] (http://meta.stackoverflow.com/q/261592/155423)해야합니다. 사이트에. – Shepmaster
Shepmaster가 말했듯이이 오류 메시지를 설명하는 질문은 이미 84 개 있습니다. 귀하의 상황에 대해 그들이 부족한 세부 사항을 설명 할 수 있도록 답변을 귀하의 사례에 맞게 조정할 수 있습니다. –