1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
//! Traits for arithmetic operations on elliptic curve field elements.
pub use core::ops::{Add, AddAssign, Mul, Neg, Sub, SubAssign};
use subtle::CtOption;
/// Perform an inversion on a field element (i.e. base field element or scalar)
pub trait Invert {
/// Field element type
type Output;
/// Invert a field element.
fn invert(&self) -> CtOption<Self::Output>;
}
#[cfg(feature = "arithmetic")]
impl<F: ff::Field> Invert for F {
type Output = F;
fn invert(&self) -> CtOption<F> {
ff::Field::invert(self)
}
}