AllowFlexibleRhs

Enum AllowFlexibleRhs 

Source
pub enum AllowFlexibleRhs<C: Cartridge> {
    Infallible(Infallible, PhantomData<fn() -> C>),
}
Expand description

Allows flexible RHSes.

use modtype::cartridges::{AllowFlexibleRhs, Field};
use num::{BigInt, BigRational};

#[modtype::use_modtype]
type F = modtype::ModType<AllowFlexibleRhs<Field<u64>>, 1_000_000_007u64>;

let mut x = F(1);
x += F(1);
x += 1u64;
x += 1i32;
x += 1f64;
x += BigInt::from(1u32);
x += BigRational::new(BigInt::from(1u32), BigInt::from(1u32));
assert_eq!(x, F(7));

Variants§

§

Infallible(Infallible, PhantomData<fn() -> C>)

Trait Implementations§

Source§

impl<C: Cartridge> Cartridge for AllowFlexibleRhs<C>

Source§

type Target = <C as Cartridge>::Target

Source§

type AssumePrimeModulus = <C as Cartridge>::AssumePrimeModulus

Source§

type AssumeAlwaysAdjusted = <C as Cartridge>::AssumeAlwaysAdjusted

Source§

type Equality = <C as Cartridge>::Equality

Source§

type Order = <C as Cartridge>::Order

Source§

type Deref = <C as Cartridge>::Deref

Source§

type PartialAddition = <C as Cartridge>::PartialAddition

Source§

type PartialSubtraction = <C as Cartridge>::PartialSubtraction

Source§

type PartialMultiplication = <C as Cartridge>::PartialMultiplication

Source§

type PartialDivision = <C as Cartridge>::PartialDivision

Source§

type FlexibleRhs = True

Source§

fn new<T: PrimInt>(raw: T, modulus: T) -> T

Implementation for From<Self::Target> and modtype{, ::thread_local}::ModType::new. Read more
Source§

fn should_adjust<T: PrimInt>(raw: T, modulus: T) -> bool

Whether to call Self::adjust. Read more
Source§

fn adjust<T: PrimInt>(raw: &mut T, modulus: T)

Make *raw *raw % modulus. Read more
Source§

fn adjusted<T: PrimInt>(raw: T, modulus: T) -> T

Make raw raw % modulus. Read more
Source§

fn sqrt(value: C::Target, modulus: C::Target) -> Option<C::Target>

Implementation for modtype{, ::thread_local, ::non_static}::ModType::sqrt. Read more
Source§

fn from_u8(value: u8, modulus: C::Target) -> C::Target

Implementation for From::<u8> and FromPrimitive::from_u8.
Source§

fn from_u16(value: u16, modulus: C::Target) -> C::Target

Implementation for From::<u16> and FromPrimitive::from_u16.
Source§

fn from_u32(value: u32, modulus: C::Target) -> C::Target

Implementation for From::<u32> and FromPrimitive::from_u32.
Source§

fn from_u64(value: u64, modulus: C::Target) -> C::Target

Implementation for From::<u64> and FromPrimitive::from_u64.
Source§

fn from_u128(value: u128, modulus: C::Target) -> C::Target

Implementation for From::<u128> and FromPrimitive::from_u128.
Source§

fn from_usize(value: usize, modulus: C::Target) -> C::Target

Implementation for From::<usize> and FromPrimitive::from_usize.
Source§

fn from_i8(value: i8, modulus: C::Target) -> C::Target

Implementation for From::<i8> and FromPrimitive::from_i8.
Source§

fn from_i16(value: i16, modulus: C::Target) -> C::Target

Implementation for From::<i16> and FromPrimitive::from_i16.
Source§

fn from_i32(value: i32, modulus: C::Target) -> C::Target

Implementation for From::<i32> and FromPrimitive::from_i32.
Source§

fn from_i64(value: i64, modulus: C::Target) -> C::Target

Implementation for From::<i64> and FromPrimitive::from_i64.
Source§

fn from_i128(value: i128, modulus: C::Target) -> C::Target

Implementation for From::<i128> and FromPrimitive::from_i128.
Source§

fn from_isize(value: isize, modulus: C::Target) -> C::Target

Implementation for From::<isize> and FromPrimitive::from_isize.
Source§

fn from_float_prim<F: FloatPrimitive>(value: F, modulus: C::Target) -> C::Target

Implementation for From::<f32, f64> and FromPrimitive::{from_f32, from_f64}.
Source§

fn from_biguint(value: BigUint, modulus: C::Target) -> C::Target

Implementation for From<BigUint>.
Source§

fn from_bigint(value: BigInt, modulus: C::Target) -> C::Target

Implementation for From<BigInt>.
Source§

fn from_biguint_ratio(value: Ratio<BigUint>, modulus: C::Target) -> C::Target

Implementation for From<Ratio<BigUint>>.
Source§

fn from_bigint_ratio(value: Ratio<BigInt>, modulus: C::Target) -> C::Target

Implementation for From<Ratio<BigInt>>.
Source§

fn eq(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> bool
where C::Equality: IsTrue,

Implementation for PartialEq::eq.
Source§

fn cmp(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> Ordering
where C::Equality: IsTrue, C::Order: IsTrue,

Implementation for PartialOrd::partial_cmp and Ord::cmp.
Source§

fn fmt_display( value: C::Target, modulus: C::Target, fmt: &mut Formatter<'_>, ) -> Result

Implementation for Display.
Source§

fn fmt_debug( value: C::Target, modulus: C::Target, ty: &'static str, fmt: &mut Formatter<'_>, ) -> Result

Implementation for Debug.
Source§

fn from_str(str: &str, modulus: C::Target) -> Result<C::Target, ParseIntError>

Implementation for FromStr.
Source§

fn neg(value: C::Target, modulus: C::Target) -> C::Target

Implementation for Neg.
Source§

fn add(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Target

Implementation for Add.
Source§

fn sub(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Target

Implementation for Sub.
Source§

fn mul(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Target

Implementation for Mul.
Source§

fn div(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Target

Implementation for Div. Read more
Source§

fn rem(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Target

Implementation for Rem. Read more
Source§

fn inv(value: C::Target, modulus: C::Target) -> C::Target

Implementation for Inv. Read more
Source§

fn from_str_radix( str: &str, radix: u32, modulus: C::Target, ) -> Result<C::Target, ParseIntError>

Implementation for Num.
Source§

fn zero(modulus: C::Target) -> C::Target

Implementation for Zero::zero.
Source§

fn is_zero(value: C::Target, modulus: C::Target) -> bool

Implementation for Zero::is_zero.
Source§

fn one(modulus: C::Target) -> C::Target

Implementation for One::one.
Source§

fn is_one(value: C::Target, modulus: C::Target) -> bool

Implementation for One::is_one.
Source§

fn checked_neg(value: C::Target, modulus: C::Target) -> Option<C::Target>

Implementation for CheckedNeg.
Source§

fn checked_add( lhs: C::Target, rhs: C::Target, modulus: C::Target, ) -> Option<C::Target>

Implementation for CheckedAdd.
Source§

fn checked_sub( lhs: C::Target, rhs: C::Target, modulus: C::Target, ) -> Option<C::Target>

Implementation for CheckedSub.
Source§

fn checked_mul( lhs: C::Target, rhs: C::Target, modulus: C::Target, ) -> Option<C::Target>

Implementation for CheckedMul.
Source§

fn checked_div( lhs: C::Target, rhs: C::Target, modulus: C::Target, ) -> Option<C::Target>

Implementation for CheckedDiv.
Source§

fn checked_rem( lhs: C::Target, rhs: C::Target, modulus: C::Target, ) -> Option<C::Target>

Implementation for CheckedRem.
Source§

fn pow_unsigned<E: UnsignedPrimitive>( base: C::Target, exp: E, modulus: C::Target, ) -> C::Target

Implementation for Pow<{u8, u16, u32, u64, u128, usize}>.
Source§

fn pow_signed<E: SignedPrimitive>( base: C::Target, exp: E, modulus: C::Target, ) -> C::Target

Implementation for Pow<{i8, i16, i32, i64, i128, isize}>.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.