返回 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();
}