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>
impl<C: Cartridge> Cartridge for AllowFlexibleRhs<C>
type Target = <C as Cartridge>::Target
type AssumePrimeModulus = <C as Cartridge>::AssumePrimeModulus
type AssumeAlwaysAdjusted = <C as Cartridge>::AssumeAlwaysAdjusted
type Equality = <C as Cartridge>::Equality
type Order = <C as Cartridge>::Order
type Deref = <C as Cartridge>::Deref
type PartialAddition = <C as Cartridge>::PartialAddition
type PartialSubtraction = <C as Cartridge>::PartialSubtraction
type PartialMultiplication = <C as Cartridge>::PartialMultiplication
type PartialDivision = <C as Cartridge>::PartialDivision
type FlexibleRhs = True
Source§fn should_adjust<T: PrimInt>(raw: T, modulus: T) -> bool
fn should_adjust<T: PrimInt>(raw: T, modulus: T) -> bool
Source§fn sqrt(value: C::Target, modulus: C::Target) -> Option<C::Target>where
C::PartialMultiplication: IsTrue,
fn sqrt(value: C::Target, modulus: C::Target) -> Option<C::Target>where
C::PartialMultiplication: IsTrue,
Implementation for
modtype{, ::thread_local, ::non_static}::ModType::sqrt. Read moreSource§fn from_i128(value: i128, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
fn from_i128(value: i128, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
Source§fn from_isize(value: isize, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
fn from_isize(value: isize, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
Source§fn from_float_prim<F: FloatPrimitive>(value: F, modulus: C::Target) -> C::Targetwhere
C::AssumePrimeModulus: IsTrue,
C::PartialSubtraction: IsTrue,
C::PartialMultiplication: IsTrue,
C::PartialDivision: IsTrue,
fn from_float_prim<F: FloatPrimitive>(value: F, modulus: C::Target) -> C::Targetwhere
C::AssumePrimeModulus: IsTrue,
C::PartialSubtraction: IsTrue,
C::PartialMultiplication: IsTrue,
C::PartialDivision: IsTrue,
Source§fn from_bigint(value: BigInt, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
fn from_bigint(value: BigInt, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
Source§fn fmt_display(
value: C::Target,
modulus: C::Target,
fmt: &mut Formatter<'_>,
) -> Result
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
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>
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::Targetwhere
C::PartialSubtraction: IsTrue,
fn neg(value: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
Implementation for
Neg.Source§fn add(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialAddition: IsTrue,
fn add(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialAddition: IsTrue,
Implementation for
Add.Source§fn sub(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
fn sub(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialSubtraction: IsTrue,
Implementation for
Sub.Source§fn mul(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialMultiplication: IsTrue,
fn mul(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialMultiplication: IsTrue,
Implementation for
Mul.Source§fn div(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialDivision: IsTrue,
fn div(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialDivision: IsTrue,
Source§fn rem(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialDivision: IsTrue,
fn rem(lhs: C::Target, rhs: C::Target, modulus: C::Target) -> C::Targetwhere
C::PartialDivision: IsTrue,
Source§fn from_str_radix(
str: &str,
radix: u32,
modulus: C::Target,
) -> Result<C::Target, ParseIntError>where
C::AssumePrimeModulus: IsTrue,
C::Equality: IsTrue,
C::Order: IsTrue,
C::PartialAddition: IsTrue,
C::PartialSubtraction: IsTrue,
C::PartialMultiplication: IsTrue,
C::PartialDivision: IsTrue,
fn from_str_radix(
str: &str,
radix: u32,
modulus: C::Target,
) -> Result<C::Target, ParseIntError>where
C::AssumePrimeModulus: IsTrue,
C::Equality: IsTrue,
C::Order: IsTrue,
C::PartialAddition: IsTrue,
C::PartialSubtraction: IsTrue,
C::PartialMultiplication: IsTrue,
C::PartialDivision: IsTrue,
Implementation for
Num.Source§fn checked_neg(value: C::Target, modulus: C::Target) -> Option<C::Target>where
C::PartialSubtraction: IsTrue,
fn checked_neg(value: C::Target, modulus: C::Target) -> Option<C::Target>where
C::PartialSubtraction: IsTrue,
Implementation for
CheckedNeg.Source§fn checked_add(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialAddition: IsTrue,
fn checked_add(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialAddition: IsTrue,
Implementation for
CheckedAdd.Source§fn checked_sub(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialSubtraction: IsTrue,
fn checked_sub(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialSubtraction: IsTrue,
Implementation for
CheckedSub.Source§fn checked_mul(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialMultiplication: IsTrue,
fn checked_mul(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialMultiplication: IsTrue,
Implementation for
CheckedMul.Source§fn checked_div(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialDivision: IsTrue,
fn checked_div(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialDivision: IsTrue,
Implementation for
CheckedDiv.Source§fn checked_rem(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialDivision: IsTrue,
fn checked_rem(
lhs: C::Target,
rhs: C::Target,
modulus: C::Target,
) -> Option<C::Target>where
C::PartialDivision: IsTrue,
Implementation for
CheckedRem.Source§fn pow_unsigned<E: UnsignedPrimitive>(
base: C::Target,
exp: E,
modulus: C::Target,
) -> C::Targetwhere
C::PartialMultiplication: IsTrue,
fn pow_unsigned<E: UnsignedPrimitive>(
base: C::Target,
exp: E,
modulus: C::Target,
) -> C::Targetwhere
C::PartialMultiplication: IsTrue,
Source§fn pow_signed<E: SignedPrimitive>(
base: C::Target,
exp: E,
modulus: C::Target,
) -> C::Target
fn pow_signed<E: SignedPrimitive>( base: C::Target, exp: E, modulus: C::Target, ) -> C::Target
Auto Trait Implementations§
impl<C> Freeze for AllowFlexibleRhs<C>
impl<C> RefUnwindSafe for AllowFlexibleRhs<C>
impl<C> Send for AllowFlexibleRhs<C>
impl<C> Sync for AllowFlexibleRhs<C>
impl<C> Unpin for AllowFlexibleRhs<C>
impl<C> UnwindSafe for AllowFlexibleRhs<C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more