借用时临时值下降 (E0506)

Temporary value dropped while borrowed (E0506)

我有以下代码:

let mut v2: Value;
let mut ts = v["response"]["ts"].as_str().unwrap();

...

loop {

        v2 = longpoll_question(server.clone(),ts,key.clone());
        if v2["ts"].as_str() == None {
            continue;
        }
        ts = v2["ts"].as_str().unwrap();

...

}

在这里,我从服务器得到一个 JSON 格式的响应,然后从中检索下一个对服务器的请求所需的“ts”值。有时服务器返回的值是“None”(大概是网络问题或远程API问题)导致崩溃,所以我决定先检查一下值是否为None展开。但是,这拒绝使用 E0506 进行编译,我不知道为什么。能解释一下吗?

我设法通过将 ts 类型更改为字符串并使用 to_string() 来解决此问题。我认为 ts,作为一个 &str,是对 v2 数据的引用,所以不可能在不删除 ts 的情况下删除 v2。