返回本地字符串作为选项<& str>

时间:2015-11-22 10:55:26

标签: rust

我想编写一个接收Thread.sleep()参数并返回for (int i = 0; i < 20; i++) { final long millisToDelay = (long) (2000 * Math.random() - 1000); System.out.println("Millis To Delay: " + millisToDelay); Thread.sleep(millisToDelay); } 的函数。我写了这个:

&str

但是我收到了错误:

  

Option<&str>的寿命不够长。

解决此问题的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:6)

您无法返回指向本地&str变量的String。这样做意味着您刚刚返回一个悬空指针,因为当函数返回时,Stringres在您的代码中)被销毁。

解决问题的最佳方法可能是返回Option<String>,即返回拥有的字符串而不是字符串切片。调整代码,最终会得到类似的结果:

fn f(text: &str) -> Option<String> {
    if // some condition {
        return None;
    }

    let mut res = String::new();
    // write something into res.

    Some(res)
}