简单代码:
fn foo() -> Vec<&'static str> {
let mut vec = Vec::new();
let mut string = String::new();
// doing something with string...
vec.push(string.as_str());
return vector; // error here: string doesn't live long enough
}
我遇到问题,我需要使用字符串进行处理并将其作为str在Vec
中返回。问题是绑定字符串的寿命不够长,因为它在foo之后超出了范围。我很困惑,我真的不知道如何解决这个问题。
答案 0 :(得分:1)
&'static str
是一个字符串文字,例如let a : &'static str = "hello world"
。它贯穿整个应用程序的生命周期。
如果您要创建新的String
,那么该字符串不是静态的!
只需返回String
的矢量。
fn foo() -> Vec<String> {
let mut vec = Vec::new();
let mut string = String::new();
// doing something with string...
vec.push(string);
return vec;
}
fn main() {
foo();
}