最佳答案
我刚刚花了一周时间阅读 Rust Book,现在我正在编写我的第一个程序,它将文件路径返回到系统壁纸:
pub fn get_wallpaper() -> &str {
let output = Command::new("gsettings");
// irrelevant code
if let Ok(message) = String::from_utf8(output.stdout) {
return message;
} else {
return "";
}
}
我得到了错误 expected lifetime parameter on &str
,我知道 Rust 想要一个输入 &str
,它将作为输出返回,因为我在函数中创建的任何 &str
都将在函数结束后立即被清除。
我知道我可以通过返回一个 String
而不是一个 &str
来回避这个问题,对于类似问题的许多答案也说明了这一点。但我似乎也可以这样做:
fn main() {
println!("message: {}", hello_string(""));
}
fn hello_string(x: &str) -> &str {
return "hello world";
}
让 &str
脱离我的功能。谁能给我解释一下为什么这样不好,为什么我不该这么做?或者在某些情况下也不是坏事?