From 26d93b4dd5cf4ca6f0c399d2adf917b58a8048a7 Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Thu, 15 Aug 2024 18:12:09 +0200 Subject: [PATCH] Added several missing derives --- src/h2b.rs | 1 + src/h2b/sketch.rs | 7 ++++--- src/h3b.rs | 1 + src/h3b/sketch.rs | 7 ++++--- src/hbb64.rs | 1 + src/hyper_two_bits.rs | 3 +++ src/lib.rs | 2 ++ 7 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/h2b.rs b/src/h2b.rs index 5a3272d..5df1988 100644 --- a/src/h2b.rs +++ b/src/h2b.rs @@ -12,6 +12,7 @@ use crate::AHasherDefaultBuilder; /// different numbers of sub streams. /// /// Both the hasher and the sub stream size siaz can be customized, by default it uses `AHasherBuilder` and `M256` +#[derive(Debug, Eq, PartialEq, Hash, Clone)] pub struct HyperTwoBits { hash: HASH, sketch: SKETCH, diff --git a/src/h2b/sketch.rs b/src/h2b/sketch.rs index d429aad..b5154e5 100644 --- a/src/h2b/sketch.rs +++ b/src/h2b/sketch.rs @@ -28,7 +28,7 @@ pub trait Sketch: Default { } /// M = 64, using two 64 bit integers to store the sketch -#[derive(Default)] +#[derive(Debug, Eq, PartialEq, Hash, Clone, Default)] pub struct M64 { low: u64, high: u64, @@ -98,7 +98,7 @@ impl Sketch for M64 { /// instructions for 128 bit integers. /// /// The implementation is similar to M64 -#[derive(Default)] +#[derive(Debug, Eq, PartialEq, Hash, Clone, Default)] pub struct M128 { low: u128, high: u128, @@ -159,7 +159,7 @@ impl Sketch for M128 { /// We use a register to store hi and low bits together /// to optimize for cache locallity when compiting inside /// a vectored sketch -#[derive(Default, Clone, Copy, Debug)] +#[derive(Default, Clone, Copy, Debug, Eq, PartialEq, Hash)] struct HiLoRegister { high: u128, low: u128, @@ -169,6 +169,7 @@ struct HiLoRegister { /// /// This is not meant to be used directly instead it serves as /// a base for the other vectored sketches +#[derive(Debug, Eq, PartialEq, Hash, Copy, Clone)] pub struct M128Reg { registers: [HiLoRegister; REGISTERS], } diff --git a/src/h3b.rs b/src/h3b.rs index ee77b34..8ee0a51 100644 --- a/src/h3b.rs +++ b/src/h3b.rs @@ -12,6 +12,7 @@ use crate::AHasherDefaultBuilder; /// different numbers of sub streams. /// /// Both the hasher and the sub stream size siaz can be customized, by default it uses `AHasherBuilder` and `M256` +#[derive(Debug, Eq, PartialEq, Hash, Clone)] pub struct HyperThreeBits { hash: HASH, sketch: SKETCH, diff --git a/src/h3b/sketch.rs b/src/h3b/sketch.rs index 30c529e..ae16fb6 100644 --- a/src/h3b/sketch.rs +++ b/src/h3b/sketch.rs @@ -39,7 +39,7 @@ pub trait Sketch: Default { } /// M = 64, using two 64 bit integers to store the sketch -#[derive(Default)] +#[derive(Debug, Eq, PartialEq, Hash, Copy, Clone, Default)] pub struct M64 { high: u64, middle: u64, @@ -121,7 +121,7 @@ impl Sketch for M64 { /// instructions for 128 bit integers. /// /// The implementation is similar to M64 -#[derive(Default)] +#[derive(Debug, Eq, PartialEq, Hash, Copy, Clone, Default)] pub struct M128 { low: u128, middle: u128, @@ -192,7 +192,7 @@ impl Sketch for M128 { /// We use a register to store hi and low bits together /// to optimize for cache locallity when compiting inside /// a vectored sketch -#[derive(Default, Clone, Copy, Debug)] +#[derive(Default, Clone, Copy, Debug, Hash, Eq, PartialEq)] struct BitRegister { high: u128, middle: u128, @@ -203,6 +203,7 @@ struct BitRegister { /// /// This is not meant to be used directly instead it serves as /// a base for the other vectored sketches +#[derive(Debug, Eq, PartialEq, Hash, Copy, Clone)] pub struct M128Reg { registers: [BitRegister; REGISTERS], } diff --git a/src/hbb64.rs b/src/hbb64.rs index 586ce88..ca9f0ec 100644 --- a/src/hbb64.rs +++ b/src/hbb64.rs @@ -1,6 +1,7 @@ use std::hash::Hasher; /// `HyperBitBit` cardinality counter with 64 substreams +#[derive(Debug, Eq, PartialEq, Hash, Clone)] pub struct HyperBitBit64 { _hash: std::marker::PhantomData, sketch1: u64, diff --git a/src/hyper_two_bits.rs b/src/hyper_two_bits.rs index 8bc6f11..267b898 100644 --- a/src/hyper_two_bits.rs +++ b/src/hyper_two_bits.rs @@ -9,6 +9,7 @@ use sketch::Sketch; use crate::M256; /// Random Seeded `AHasher` Builder that allows for seeded hashing per `HyperTwoBit` isnstance +#[derive(Debug, Eq, PartialEq, Hash, Clone)] pub struct AHasherBuilder { state: u64, } @@ -36,6 +37,7 @@ pub type AHasherDefaultBuilder = BuildHasherDefault; /// Random Seeded `SipHasher13` Builder #[cfg(feature = "siphash")] +#[derive(Debug, Eq, PartialEq, Hash, Clone)] pub struct SipHasher13Builder { state: u64, } @@ -65,6 +67,7 @@ pub type SipHasher13DefaultBuilder = BuildHasherDefault { hash: HASH, sketch: SKETCH, diff --git a/src/lib.rs b/src/lib.rs index 2f93b2e..b797ef9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,6 +30,7 @@ use std::hash::{BuildHasher, BuildHasherDefault, Hasher as _}; pub use prelude::*; /// Random Seeded `AHasher` Builder that allows for seeded hashing per `HyperTwoBit` isnstance +#[derive(Debug, Eq, PartialEq, Hash, Clone)] pub struct AHasherBuilder { state: u64, } @@ -57,6 +58,7 @@ pub type AHasherDefaultBuilder = BuildHasherDefault; /// Random Seeded `SipHasher13` Builder #[cfg(feature = "siphash")] +#[derive(Debug, Eq, PartialEq, Hash, Clone)] pub struct SipHasher13Builder { state: u64, }