![]() |
1
9
简单的回答是:没有。
你可能知道,但编译器不知道。具体而言,生命期当前绑定到它们在中定义的词法范围。您正在查找的功能称为 non-lexical lifetimes .它现在不稳定,但计划在Rust 2018版中启用。 例如:
程序员可以告诉我们已经完成了
您的情况更加阴险,因为清除字符串的决定与字符串本身的借用值交织在一起。像这样的东西将是我第一个到达的地方:
然而,您的特定案例可能能够被转换以避免多个
如果引入新的类型和/或方法,这看起来不会太糟糕。作为奖励,有一个地方
启用NLL时,原始代码按原样工作:
|
![]() |
Abhijit Sarkar · 如何修复“闭包可能比当前函数更有效” 2 年前 |
![]() |
dempzorz · 匹配语句和结果中的可变借用 7 年前 |
![]() |
mojtab23 · 为什么在同一范围内可能存在多个可变借款? 7 年前 |
![]() |
Bob Bobbio · 引用盒装值的生命周期不够长 7 年前 |
![]() |
Etherian · 我如何变异我正在循环的结构? 7 年前 |
![]() |
steamer25 · 有没有办法在绑定超出范围之前释放它? 8 年前 |
![]() |
Sergey · 如何在hashmap字段中保存对处理程序的引用 9 年前 |
![]() |
Moebius · 为什么我不能保留一个盒子? 9 年前 |
![]() |
Moebius · 展开时无法移出位于共享引用后面的值 9 年前 |