gpt4 book ai didi

rust - 如何交换可变结构中的两个向量

转载 作者:行者123 更新时间:2023-12-05 01:54:47 26 4
gpt4 key购买 nike

有如下结构:

struct Data {
xs: Vec<i32>,
ys: Vec<i32>
}

尝试将结构的一个向量分配给另一个向量会导致错误:

impl Data {
fn proc(&mut self) {
self.xs = self.ys;
}
}

错误是move occurs because self.ys has type Vec<i32>, which does not implement the Copy trait .

结构是可变的,为什么不能从self.ys移动在那里?

最佳答案

使用std::mem::swap就地交换值:

impl Data {
fn proc(&mut self) {
std::mem::swap(&mut self.xs, &mut self.ys);
}
}

(playground)

self.xs = self.ys 不起作用,因为 Vec 没有实现 Copy:你必须 .clone() .

关于rust - 如何交换可变结构中的两个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70549903/

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