#![feature(portable_simd)]
use std::fmt::Debug;
use std::ops::{Add, AddAssign};
#[cfg(feature = "byte")]
pub mod byte;
#[cfg(feature = "int")]
pub mod int;
#[cfg(feature = "int-prime")]
pub mod int_prime;
pub trait Group<const LAMBDA: usize>
where
Self: Add<Output = Self>
+ AddAssign
+ PartialEq
+ Eq
+ Debug
+ Sized
+ Clone
+ Sync
+ Send
+ From<[u8; LAMBDA]>,
{
fn zero() -> Self;
fn add_inverse(self) -> Self;
fn add_inverse_if(self, t: bool) -> Self {
if t {
self.add_inverse()
} else {
self
}
}
}