微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

for 循环中的 Rust 生命周期问题

如何解决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 引用了应用程序并且它不在外部作用域中。 ApplicationTransaction 来自一个库,我无法更改它们的实现。

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 举报,一经查实,本站将立刻删除。