macro_rules! impl_field_element {
    (
        $fe:tt,
        $bytes:ty,
        $uint:ty,
        $modulus:expr,
        $arr:ty,
        $from_mont:ident,
        $to_mont:ident,
        $add:ident,
        $sub:ident,
        $mul:ident,
        $neg:ident,
        $square:ident
    ) => { ... };
}
Expand description

Provides both inherent and trait impls for a field element type which are backed by a core set of arithmetic functions specified as macro arguments.

Inherent impls

  • const ZERO: Self
  • const ONE: Self (multiplicative identity)
  • pub fn from_be_bytes
  • pub fn from_be_slice
  • pub fn from_le_bytes
  • pub fn from_le_slice
  • pub fn from_uint
  • fn from_uint_unchecked
  • pub fn to_be_bytes
  • pub fn to_le_bytes
  • pub fn to_canonical
  • pub fn is_odd
  • pub fn is_zero
  • pub fn double

NOTE: field implementations must provide their own inherent impls of the following methods in order for the code generated by this macro to compile:

  • pub fn invert
  • pub fn sqrt

Trait impls

  • AsRef<$arr>
  • ConditionallySelectable
  • ConstantTimeEq
  • ConstantTimeGreater
  • ConstantTimeLess
  • Default
  • DefaultIsZeroes
  • Eq
  • Field
  • PartialEq

Ops

  • Add
  • AddAssign
  • Sub
  • SubAssign
  • Mul
  • MulAssign
  • Neg