gpt4 book ai didi

rust - 如何将值从一个列表移动/克隆到另一个列表?

转载 作者:行者123 更新时间:2023-11-29 08:22:32 33 4
gpt4 key购买 nike

我只是想做这样的事情:

fn main() {
let mut points : Vec<(&str, &str)> = Vec::new();
let existing : Vec<(String, String)> = Vec::new();

for t in existing {
points.push((&t.0[..], &t.1[..]));
}
}

出现错误:

main.rs:6:21: 6:24 error: `t.0` does not live long enough                                                                                                                                                                                                                                                     
main.rs:6 points.push((&t.0[..], &t.1[..]));

我怎么能在 Rust 中做到这一点?

谢谢!

最佳答案

生命周期从变量声明开始。由于您的 points 变量是在 existing 变量之前创建的,因此 points 不允许对 existing 有任何引用,因为 existing 将在 points 之前被删除。

第二个问题是您正在迭代值,这将进一步限制字符串在循环体中的生命周期。

简单的解决方案是交换两个声明并将循环更改为遍历引用而不是值:

let existing : Vec<(String, String)> = Vec::new();
let mut points : Vec<(&str, &str)> = Vec::new();

for t in &existing {
points.push((&t.0, &t.1));
}

关于rust - 如何将值从一个列表移动/克隆到另一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872486/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com