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