Trait Group

Source
pub trait Group<const LAMBDA: usize>
where Self: Add<Output = Self> + AddAssign + PartialEq + Eq + Debug + Sized + Clone + Sync + Send + From<[u8; LAMBDA]>,
{ // Required methods fn zero() -> Self; fn add_inverse(self) -> Self; // Provided method fn add_inverse_if(self, t: bool) -> Self { ... } }
Expand description

Group (mathematics) that can be converted from a byte array

Into<[u8; LAMBDA]> is not used in any fss crate so not included. But it is implemented by all groups in the submodules.

Required Methods§

Source

fn zero() -> Self

Zero in the group

Source

fn add_inverse(self) -> Self

Additive inverse in the group, e.g., -x for x in the integer group

Provided Methods§

Source

fn add_inverse_if(self, t: bool) -> Self

Helper to get the additive inverse if true. Used for expressions like $(-1)^n x$, in which t can be computed from n.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for ByteGroup<LAMBDA>

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for I8Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for I16Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for I32Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for I64Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for I128Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for IsizeGroup

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for group_math::int::U8Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for group_math::int::U16Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for group_math::int::U32Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for group_math::int::U64Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for group_math::int::U128Group

Source§

impl<const LAMBDA: usize> Group<LAMBDA> for UsizeGroup

Source§

impl<const LAMBDA: usize, const MOD: u8> Group<LAMBDA> for group_math::int_prime::U8Group<MOD>

Source§

impl<const LAMBDA: usize, const MOD: u16> Group<LAMBDA> for group_math::int_prime::U16Group<MOD>

Source§

impl<const LAMBDA: usize, const MOD: u32> Group<LAMBDA> for group_math::int_prime::U32Group<MOD>

Source§

impl<const LAMBDA: usize, const MOD: u64> Group<LAMBDA> for group_math::int_prime::U64Group<MOD>

Source§

impl<const LAMBDA: usize, const MOD: u128> Group<LAMBDA> for group_math::int_prime::U128Group<MOD>