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の質問が既にあります。彼らがあなたの状況に欠けていた細部を説明して、その答えがあなたの事例に合わせて調整できるようにすることができますか? –