如何解决for 循环中的 Rust 生命周期问题
我想在 for 循环中执行以下操作,但由于 rust 中的生命周期规则而无法执行。
let mut txns = vec![];
for (user_key,usage) in report.usages().iter() {
let application = Application::from(UserKey::from(user_key.as_str()));
let transaction = Transaction::new(&application,None,None);
txns.push(transaction)
}
但是,我可以通过使用 2 个 for 循环来做到这一点,该循环在第一个 for 循环中构建应用程序,然后在第二个 for 循环中构建事务。但我想在一个 for 循环中做到这一点。有哪些可能的替代方法和最原始的方法?这里的问题是 Transaction
引用了应用程序并且它不在外部作用域中。 Application
和 Transaction
来自一个库,我无法更改它们的实现。
PS:我现在正在做的另一种方式。
let mut app_usage = vec![];
for (user_key,usage) in report.usages().iter() {
let application = Application::from(UserKey::from(user_key.as_str()));
let usage = Usage::new(usage);
app_usage.push((application,usage))
}
let txns = app_usage.iter().map(|au| (Transaction::new(&au.0,Some(&au.1),None))).collect::<Vec<_>>();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。