concrete_core/specification/
key_kinds.rs1#[cfg(feature = "__commons_serialization")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, PartialEq, Eq)]
7#[cfg_attr(feature = "__commons_serialization", derive(Serialize, Deserialize))]
8pub struct BinaryKeyKind;
9#[derive(Clone, Debug, PartialEq, Eq)]
11#[cfg_attr(feature = "__commons_serialization", derive(Serialize, Deserialize))]
12pub struct TernaryKeyKind;
13#[derive(Clone, Debug, PartialEq, Eq)]
15#[cfg_attr(feature = "__commons_serialization", derive(Serialize, Deserialize))]
16pub struct GaussianKeyKind;
17#[derive(Clone, Debug, PartialEq, Eq)]
19#[cfg_attr(feature = "__commons_serialization", derive(Serialize, Deserialize))]
20pub struct UniformKeyKind;
21
22#[derive(Clone)]
23pub struct ZeroKeyKind;
25
26pub trait KeyKind: seal::SealedKeyKind + Sync + Clone {}
30
31impl KeyKind for BinaryKeyKind {}
32impl KeyKind for TernaryKeyKind {}
33impl KeyKind for GaussianKeyKind {}
34impl KeyKind for UniformKeyKind {}
35impl KeyKind for ZeroKeyKind {}
36
37mod seal {
38 pub trait SealedKeyKind {}
39 impl SealedKeyKind for super::BinaryKeyKind {}
40 impl SealedKeyKind for super::TernaryKeyKind {}
41 impl SealedKeyKind for super::GaussianKeyKind {}
42 impl SealedKeyKind for super::UniformKeyKind {}
43 impl SealedKeyKind for super::ZeroKeyKind {}
44}