Trait Group

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

Group (mathematics). Which has:

  • Associative operation.
  • Identity element.
  • Inverse element.

Required Methods§

Source

fn zero() -> Self

Identity element.

E.g., 0 in the integer group.

If the compiler cannot infer BLEN with this static method, you can use the fully qualified syntax like:

use fss_rs::group::Group;
use fss_rs::group::byte::ByteGroup;

let e: ByteGroup<16> = Group::<16>::zero();

Provided Methods§

Source

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

Helper to get the inverse element 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 BLEN: usize> Group<BLEN> for ByteGroup<BLEN>

Source§

impl<const BLEN: usize> Group<BLEN> for fss_rs::group::int::U8Group

Source§

impl<const BLEN: usize> Group<BLEN> for fss_rs::group::int::U16Group

Source§

impl<const BLEN: usize> Group<BLEN> for fss_rs::group::int::U32Group

Source§

impl<const BLEN: usize> Group<BLEN> for fss_rs::group::int::U64Group

Source§

impl<const BLEN: usize> Group<BLEN> for fss_rs::group::int::U128Group

Source§

impl<const BLEN: usize, const MOD: u8> Group<BLEN> for fss_rs::group::int_prime::U8Group<MOD>

Source§

impl<const BLEN: usize, const MOD: u16> Group<BLEN> for fss_rs::group::int_prime::U16Group<MOD>

Source§

impl<const BLEN: usize, const MOD: u32> Group<BLEN> for fss_rs::group::int_prime::U32Group<MOD>

Source§

impl<const BLEN: usize, const MOD: u64> Group<BLEN> for fss_rs::group::int_prime::U64Group<MOD>

Source§

impl<const BLEN: usize, const MOD: u128> Group<BLEN> for fss_rs::group::int_prime::U128Group<MOD>