String 如何从函数返回拆分字符串(&;str)?

String 如何从函数返回拆分字符串(&;str)?,string,rust,split,return,String,Rust,Split,Return,我正在从读取文件的函数返回一个String,现在我想分割返回的字符串内容,但我无法将生成的字符串的Vec返回给调用者 对我来说很明显,借用发生在string.split(“\n”)中,因此由于引用,无法返回,但编译器错误并不能指导我找到解决方案 什么是我不能理解的 到目前为止,以下和后续链接/帖子对我没有帮助 use std::str::Split; fn main() { let value = process(); println!("Ergebnis: {:?

我正在从读取文件的函数返回一个
Strin
g,现在我想分割返回的字符串内容,但我无法将生成的
字符串的
Vec
返回给调用者

对我来说很明显,借用发生在
string.split(“\n”)
中,因此由于引用,无法返回,但编译器错误并不能指导我找到解决方案

什么是我不能理解的

到目前为止,以下和后续链接/帖子对我没有帮助

use std::str::Split;

fn main() {
    let value = process();

    println!("Ergebnis: {:?}", value);
}

fn process<'a>() -> Vec<&'a str> {
    let testballon = Ok("testzztestztest");

    let string: String = match testballon {
        Ok(content) => content.to_string(),
        Err(err) => err,
    };

    let string = if string.contains("zz") {
        string.replace("zz", "n")
    } else {
        string.replace("z", "n")
    };

    let lines: Split<&str> = string.split("\n");

    let v: Vec<&str> = lines.collect();

    v
}
使用std::str::Split;
fn main(){
让值=进程();
println!(“Ergebnis:{:?}”,值);
}
fn过程{
设testballon=Ok(“testzztestztest”);
让string:string=match testballon{
Ok(content)=>content.to_string(),
Err(Err)=>Err,
};
让string=if string.contains(“zz”){
字符串。替换(“zz”、“n”)
}否则{
字符串。替换(“z”、“n”)
};
let行:Split=string.Split(“\n”);
设v:Vec=lines.collect();
v
}
错误[E0515]:无法返回引用局部变量'string'的值`
-->src/main.rs:27:5
|
23 | let line:Split=string.Split(“\n”);
|----“string”是在这里借来的
...
27 | v
|^返回引用当前函数拥有的数据的值

如果您调整
过程
,使其返回
向量
,它就会工作。