我想编写一个接收&str参数并返回的函数Option<&str>.我写了这个:
fn f(text: &str) -> Option<&str> {
if // some condition {
return None;
}
let mut res = String::new();
// write something into res.
// return res
Some(&res[..])
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
res活得不够久.
解决这个问题的最佳解决方案是什么?
您无法&str将该点返回到局部String变量中.这样做意味着您只返回一个悬空指针,因为函数返回时String(res在您的代码中)会被销毁.
解决问题的最佳方法可能是返回a Option<String>,即返回拥有的字符串而不是字符串切片.调整代码,最终可能会出现以下情况:
fn f(text: &str) -> Option<String> {
if // some condition {
return None;
}
let mut res = String::new();
// write something into res.
Some(res)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
454 次 |
| 最近记录: |