pub trait Identity {
#[must_use]
fn identity() -> Self;
}
pub mod ops {
use subtle::Choice;
pub trait Square {
type Output;
#[must_use]
fn square(self) -> Self::Output;
}
pub trait Double {
type Output;
#[must_use]
fn double(self) -> Self::Output;
}
pub trait Half {
type Output;
#[must_use]
fn half(self) -> Self::Output;
}
pub trait Pow<T> {
type Output;
#[must_use]
fn pow(self, exp: T) -> Self::Output;
}
pub trait ModSqrt {
type Output;
#[must_use]
fn mod_sqrt(self, choice: Choice) -> Self::Output;
}
}