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
|^返回引用当前函数拥有的数据的值
如果您调整过程
,使其返回向量
,它就会工作。