rust - 如果没有明确提供类型,借用检查器会抱怨循环内的关闭
问题描述
我有这段代码,借用检查器显示错误:
fn f1(v: &str) {
}
fn main() {
let c = |v| f1(v);
for _ in 0..1 {
let s = String::new();
c(&s);
}
}
|
10 | c(&s);
| - ^^ borrowed value does not live long enough
| |
| borrow later used here
11 | }
| - `s` dropped here while still borrowed
但是如果我在闭包中添加显式类型,代码就会编译let c = |v: &str| f1(v);
有人可以解释为什么它在第二种情况下而不是第一种情况下有效,因为我理解 rust 在第一个示例中正确推断出相同的类型(因为如果我在循环外运行闭包,它会起作用)?
解决方案
推荐阅读
- ruby - 从 YAML 配置文件中获取键名
- java - UDP 服务器发送/接收
- javascript - Rails 6:渲染部分后执行 JS 函数
- lua - keycreator:21: 尝试在本地 'iLevel' 上执行算术运算(一个 nil 值)
- haskell - 如何从特定形式的数据类型中提取信息?
- flask - 带有 GeoAlchemy 列的 Flask 模型
- javascript - 以不可变的方式删除嵌套数组中的对象
- .net - UiPath Microsoft Graph 身份验证
- microsoft-graph-api - 如何通过 REST API 在 Teams 频道内更新(编辑)Microsoft Teams 消息(线程或回复)
- ruby-on-rails - 为什么我不能创建新类的实例?