私は完全に寿命を理解していませんが、b
の寿命はself
の前に終わると思います。値が長すぎる
このコードを編集するにはどうすればよいですか?メモリコピーをしますか?私が新しいインスタンスを作った場合、この生涯はこのケースに従わなければなりません。
pub struct Formater {
layout: &'static str,
}
impl Formater {
pub fn new(layout: &'static str) -> Formater {
let regex = Regex::new(r"%\{([a-z]+)(?::(.*?[^\\]))?\}").unwrap();
let b = regex.replace_all(layout, "{}");
return Formater {
layout: &b,
};
}
}
エラー:
error: `b` does not live long enough
--> src/format.rs:16:22
|
16 | layout: &b,
| ^does not live long enough
17 | };
18 | }
| - borrowed value only lives until here
|
= note: borrowed value must be valid for the static lifetime...
'layout 'に'&' static str'の代わりに 'String'を設定する必要があります。 http://stackoverflow.com/questions/24158114/rust-string-versus-str – kennytm
これは私がそれを行うのに役立つことができます。しかし、私はそれを行うためにstr.howを使用したいのですか?rustは生涯を編集することができません。 –
@彭灵俊なぜ '&str'を使いたいのですか? – wimh