Rust 临时值在此语句末尾被释放

Rust 临时值在此语句末尾被释放,rust,borrow-checker,Rust,Borrow Checker,我正在尝试使用“选择板条箱”刮取网页: let document = Document::from_read(response).unwrap(); for node in document.find(Class("lia-list-row")) { let title = node.find(Class("page-link")).next().unwrap(); let title_text = title.text().trim(); println!("{}\

我正在尝试使用“选择板条箱”刮取网页:

let document = Document::from_read(response).unwrap();

for node in document.find(Class("lia-list-row")) {
    let title = node.find(Class("page-link")).next().unwrap();
    let title_text = title.text().trim();

    println!("{}\n", title_text);
}
这将导致以下错误:

让title_text=title.text().trim();
^^^^^^^^^^^^-在此语句末尾释放临时值
|
创建在仍在使用时释放的临时文件
普林顿!(“{}-{}\n”,一,标题(文本);
----------借用在这里使用,在循环的后续迭代中使用
我通过分离
.text()
.trim()


有什么区别?为什么第一次尝试失败了?

这一次一开始似乎很复杂,但请记住
String
&str
是不同的

String
可以独立使用,但是
&str
只是对
String
的一部分的引用。因此,
&str
可以在引用的
字符串
存在的时间内生存。让我们看看它应该如何处理返回签名

let title_text = title   .text()   .trim();
//               ^       ^         ^
//               Node    String <- &str
让title_text=title.text().trim();
//               ^       ^         ^

//请查看如何创建节点字符串,然后查看您的问题以将其包括在内。我们无法说出代码中存在哪些板条箱、类型、特征、字段等。试着制造一些能再现你在网络上的错误的东西,或者你可以在一个全新的货运项目中再现它。还有。有没有一种方法可以在不声明新变量的情况下解决此问题?@rm.rf.etc如果允许复制,可以使用
title.text().trim().to_string()
let title_text = title   .text()   .trim();
//               ^       ^         ^
//               Node    String <- &str