struct - 如何为自定义结构实现复制特征?

标签 struct rust traits

<分区>

我有自己的自定义结构 - 事务,我希望可以复制它。

This fails because Vec does not implement Copy for any T. E0204

如何实现复制到 Vec 和我的结构。我要举个例子。

Playground

#[derive(PartialOrd, Eq, Hash)]
struct Transaction {
    transaction_id: Vec<u8>,
    proto_id: Vec<u8>,
    len_field: Vec<u8>,
    unit_id: u8,
    func_nr: u8,
    count_bytes: u8,
}

impl Copy for Transaction { }

impl Clone for Transaction {
    fn clone(&self) -> Transaction {
        *self
    }
}

impl PartialEq for Transaction {
    fn eq(&self, other: &Self) -> bool {
        self.unit_id == other.unit_id
            && self.func_nr == other.func_nr
            && self.count_bytes == other.count_bytes
    }
}

fn main() 
{
}

最佳答案

我已经解决了这个问题: 我用表 [u8; 2] 而不是 Vec 。

但我仍然不明白为什么不能在结构中使用向量并复制它。

#[derive(PartialOrd, Eq, Copy, Clone, Hash)]
struct Transaction {
    transaction_id: [u8; 2],
    proto_id:  [u8; 2],
    len_field: [u8; 2],
    unit_id: u8,
    func_nr: u8,
    count_bytes: u8,
}

impl PartialEq for Transaction {
    fn eq(&self, other: &Self) -> bool {
        self.unit_id == other.unit_id
            && self.func_nr == other.func_nr
            && self.count_bytes == other.count_bytes
    }
}

关于struct - 如何为自定义结构实现复制特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428100/

相关文章:

c++ - 是否应该在 memset 之前对结构进行类型转换

C++ 结构数组和相等数组之间的区别

rust - 了解 Rust 库的依赖关系

scala - 为什么 Scala Trait 可以扩展类?

scala - 为什么我们需要 scala 中的特征?

c - 段错误(核心转储)但不知道如何修复

c - 到达指向 C 中结构的指针

json - 如何将逗号分隔的 JSON 字符串反序列化为单独字符串的向量?

parsing - 使用 `nom` 处理自定义枚举类型是否有意义?

rust - 无法调用 fn<T : X> from an impl<T: X> because X is not satisfied for T