我刚刚花了一周的时间阅读了 Rust 书籍,现在正在编写我的第一个程序,它返回系统壁纸的文件路径:
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
。 有人可以解释一下为什么这样做不好,以及我为什么不应该这样做吗?或者在某些情况下它是否可以接受?