gpt4 book ai didi

rust - 在枚举变体之间移动数组值

转载 作者:行者123 更新时间:2023-11-29 08:00:39 25 4
gpt4 key购买 nike

我的问题如下。我有几个使用越来越多项目的变体的枚举。为简单起见,我将数字减少到前两个:

#[derive(Debug)]
pub enum Variant<A> {
Single([A; 1]),
Double([A; 2]),
}

我想创建特殊的方法,最好将 Single 转换为 Double。例如,如果我在 Single([x]) 上调用 push_front(a),我需要返回 Double([a,x]。我可以做到的一种方法是:

impl<A: Copy> Variant<A> {
fn push_front(&mut self, value: A) {
self* = match self {
&mut Single(b) => Double([value, b[0]]),
_ => panic!("Can't convert"),
};
}
}

有没有一种方法可以在 A 不必实现 Copy 的情况下实现类似的效果?

Playground 链接:http://is.gd/i0bQtl

最佳答案

您可以将约束从Copy 更改为Clone;然后,火柴臂将变为:

&mut Single(ref b) => Double([value, b[0].clone()]),

关于rust - 在枚举变体之间移动数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181232/

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