返回 Vec<&str> 时字符串的生命周期
String's lifetime when returning Vec<&str>
简单代码:
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
}
我有问题需要处理字符串,return 它在 Vec
中作为 str。问题是绑定字符串的寿命不够长,因为它在 foo 之后超出了范围。我很困惑,我真的不知道如何解决。
A &'static str
是字符串文字,例如let a : &'static str = "hello world"
。它存在于应用程序的整个生命周期。
如果您正在创建一个新的 String
,那么该字符串不是静态的!
简单地return一个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();
}
简单代码:
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
}
我有问题需要处理字符串,return 它在 Vec
中作为 str。问题是绑定字符串的寿命不够长,因为它在 foo 之后超出了范围。我很困惑,我真的不知道如何解决。
A &'static str
是字符串文字,例如let a : &'static str = "hello world"
。它存在于应用程序的整个生命周期。
如果您正在创建一个新的 String
,那么该字符串不是静态的!
简单地return一个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();
}