Skip to main content

Odd

Struct Odd 

Source
#[repr(transparent)]
pub struct Odd<T>(T) where T: ?Sized;
Expand description

Wrapper type for odd integers.

These are frequently used in cryptography, e.g. as a modulus.

Tuple Fields§

§0: T

Implementations§

Source§

impl<const LIMBS: usize> Odd<Int<LIMBS>>

Source

pub const fn gcd_unsigned(&self, rhs: &Uint<LIMBS>) -> Odd<Uint<LIMBS>>

Compute the greatest common divisor of self and rhs.

Source

pub const fn gcd_unsigned_vartime(&self, rhs: &Uint<LIMBS>) -> Odd<Uint<LIMBS>>

Compute the greatest common divisor of self and rhs.

Executes in variable time w.r.t. all input parameters.

Source

pub const fn xgcd( &self, rhs: &NonZero<Int<LIMBS>>, ) -> XgcdOutput<LIMBS, Odd<Uint<LIMBS>>>

Execute the Extended GCD algorithm.

Given (self, rhs), computes (g, x, y) s.t. self * x + rhs * y = g = gcd(self, rhs).

Source§

impl<T> Odd<T>

Source

pub fn new(n: T) -> CtOption<Odd<T>>
where T: Integer,

Create a new odd integer.

Source

pub fn get(self) -> T

Returns the inner value.

Source

pub const fn get_copy(self) -> T
where T: Copy,

Returns a copy of the inner value for Copy types.

This allows the function to be const fn, since Copy is implicitly !Drop, which avoids problems around const fn destructors.

Source

pub fn into_nz(self) -> NonZero<T>

All odd integers are definitionally non-zero, so we can convert into the equivalent NonZero type.

Source§

impl<T> Odd<T>
where T: ?Sized,

Source

pub const fn as_ref(&self) -> &T

Provides access to the contents of Odd in a const context.

Source

pub const fn as_nz_ref(&self) -> &NonZero<T>

All odd integers are definitionally non-zero, so we can also obtain a reference to the equivalent NonZero type.

Source§

impl<T> Odd<T>
where T: Bounded + ?Sized,

Source

pub const BITS: u32 = T::BITS

Total size of the represented integer in bits.

Source

pub const BYTES: usize = T::BYTES

Total size of the represented integer in bytes.

Source§

impl<const LIMBS: usize> Odd<Uint<LIMBS>>

Source

pub const fn from_be_hex(hex: &str) -> Odd<Uint<LIMBS>>

Create a new OddUint from the provided big endian hex string.

§Panics
  • if the hex is malformed or not zero-padded accordingly for the size.
  • if the value is even.
Source

pub const fn from_le_hex(hex: &str) -> Odd<Uint<LIMBS>>

Create a new Odd<Uint<LIMBS>> from the provided little endian hex string.

§Panics
  • if the hex is malformed or not zero-padded accordingly for the size.
  • if the value is even.
Source

pub const fn as_uint_ref(&self) -> &Odd<UintRef>

Borrow this OddUint as a &OddUintRef.

Source

pub const fn resize<const T: usize>(&self) -> Odd<Uint<T>>

Construct an Odd<Uint<T>> from the unsigned integer value, truncating the upper bits if the value is too large to be represented.

Source§

impl<const LIMBS: usize> Odd<Int<LIMBS>>

Source

pub const fn abs_sign(&self) -> (Odd<Uint<LIMBS>>, Choice)

The sign and magnitude of this Odd<Int<{LIMBS}>>.

Source

pub const fn abs(&self) -> Odd<Uint<LIMBS>>

The magnitude of this Odd<Int<{LIMBS}>>.

Source§

impl Odd<UintRef>

Source

pub const fn to_uint_resize<const T: usize>(&self) -> Odd<Uint<T>>

Construct an Odd<Uint<T>> from the unsigned integer value, truncating the upper bits if the value is too large to be represented.

Source§

impl Odd<BoxedUint>

Source

pub const fn as_uint_ref(&self) -> &Odd<UintRef>

Borrow this OddBoxedUint as a &OddUintRef.

Source

pub fn random<R>(rng: &mut R, bit_length: u32) -> Odd<BoxedUint>
where R: TryRng + ?Sized,

Generate a random Odd<Uint<T>>.

Source§

impl<const LIMBS: usize> Odd<Uint<LIMBS>>

Source

pub const fn gcd_unsigned(&self, rhs: &Uint<LIMBS>) -> Odd<Uint<LIMBS>>

Compute the greatest common divisor of self and rhs.

Source

pub const fn gcd_unsigned_vartime(&self, rhs: &Uint<LIMBS>) -> Odd<Uint<LIMBS>>

Compute the greatest common divisor of self and rhs.

Executes in variable time w.r.t. all input parameters.

Source

pub const fn xgcd( &self, rhs: &Odd<Uint<LIMBS>>, ) -> XgcdOutput<LIMBS, Odd<Uint<LIMBS>>>

Execute the Extended GCD algorithm.

Given (self, rhs), computes (g, x, y) s.t. self * x + rhs * y = g = gcd(self, rhs).

Source§

impl Odd<UintRef>

Source

pub const fn invert_mod_u64(&self) -> u64

Returns the multiplicative inverse of the argument modulo 2^64.

Trait Implementations§

Source§

impl<T> AsRef<[Limb]> for Odd<T>
where T: AsRef<[Limb]>,

Source§

fn as_ref(&self) -> &[Limb]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> AsRef<NonZero<T>> for Odd<T>
where T: ?Sized,

Source§

fn as_ref(&self) -> &NonZero<T>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<Odd<UintRef>> for Odd<BoxedUint>

Available on crate feature alloc only.
Source§

fn as_ref(&self) -> &Odd<UintRef>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<const LIMBS: usize> AsRef<Odd<UintRef>> for Odd<Uint<LIMBS>>

Source§

fn as_ref(&self) -> &Odd<UintRef>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> AsRef<T> for Odd<T>
where T: ?Sized,

Source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> Binary for Odd<T>
where T: Binary + ?Sized,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<T> Clone for Odd<T>
where T: Clone + ?Sized,

Source§

fn clone(&self) -> Odd<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> ConditionallySelectable for Odd<T>
where T: Copy, Odd<T>: CtSelect,

Available on crate feature subtle only.
Source§

fn conditional_select(a: &Odd<T>, b: &Odd<T>, choice: Choice) -> Odd<T>

Select a or b according to choice. Read more
Source§

fn conditional_assign(&mut self, other: &Self, choice: Choice)

Conditionally assign other to self, according to choice. Read more
Source§

fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)

Conditionally swap self and other if choice == 1; otherwise, reassign both unto themselves. Read more
Source§

impl<T> ConstOne for Odd<T>
where T: ConstOne + One,

Source§

const ONE: Odd<T>

The multiplicative identity element of Self, 1.
Source§

impl<T> ConstantTimeEq for Odd<T>
where Odd<T>: CtEq, T: ?Sized,

Available on crate feature subtle only.
Source§

fn ct_eq(&self, other: &Odd<T>) -> Choice

Determine if two items are equal. Read more
Source§

fn ct_ne(&self, other: &Self) -> Choice

Determine if two items are NOT equal. Read more
Source§

impl<T> CtAssign for Odd<T>
where T: CtAssign,

Source§

fn ct_assign(&mut self, other: &Odd<T>, choice: Choice)

Conditionally assign src to self if choice is Choice::TRUE.
Source§

impl<T> CtAssignSlice for Odd<T>
where T: CtAssignSlice,

Source§

fn ct_assign_slice(dst: &mut [Self], src: &[Self], choice: Choice)

Conditionally assign src to dst if choice is Choice::TRUE, or leave it unchanged for Choice::FALSE.
Source§

impl<T> CtEq for Odd<T>
where T: CtEq + ?Sized,

Source§

fn ct_eq(&self, other: &Odd<T>) -> Choice

Determine if self is equal to other in constant-time.
Source§

fn ct_ne(&self, other: &Rhs) -> Choice

Determine if self is NOT equal to other in constant-time.
Source§

impl<T> CtEqSlice for Odd<T>
where T: CtEq,

Source§

fn ct_eq_slice(a: &[Self], b: &[Self]) -> Choice

Determine if a is equal to b in constant-time.
Source§

fn ct_ne_slice(a: &[Self], b: &[Self]) -> Choice

Determine if a is NOT equal to b in constant-time.
Source§

impl<T> CtSelect for Odd<T>
where T: CtSelect,

Source§

fn ct_select(&self, other: &Odd<T>, choice: Choice) -> Odd<T>

Select between self and other based on choice, returning a copy of the value. Read more
Source§

fn ct_swap(&mut self, other: &mut Self, choice: Choice)

Conditionally swap self and other if choice is Choice::TRUE.
Source§

impl<T> Debug for Odd<T>
where T: Debug + ?Sized,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<T> Default for Odd<T>
where T: One,

Source§

fn default() -> Odd<T>

Returns the “default value” for a type. Read more
Source§

impl<T> Deref for Odd<T>
where T: ?Sized,

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &T

Dereferences the value.
Source§

impl<T> Display for Odd<T>
where T: Display + ?Sized,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<const LIMBS: usize> From<&Odd<Uint<LIMBS>>> for Odd<BoxedUint>

Source§

fn from(uint: &Odd<Uint<LIMBS>>) -> Odd<BoxedUint>

Converts to this type from the input type.
Source§

impl<const LIMBS: usize> From<Odd<Limb>> for Odd<Uint<LIMBS>>

Source§

fn from(limb: Odd<Limb>) -> Odd<Uint<LIMBS>>

Converts to this type from the input type.
Source§

impl<const LIMBS: usize> From<Odd<Uint<LIMBS>>> for Odd<BoxedUint>

Source§

fn from(uint: Odd<Uint<LIMBS>>) -> Odd<BoxedUint>

Converts to this type from the input type.
Source§

impl Gcd<BoxedUint> for Odd<BoxedUint>

Source§

type Output = Odd<BoxedUint>

Output type.
Source§

fn gcd(&self, rhs: &BoxedUint) -> <Odd<BoxedUint> as Gcd<BoxedUint>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &BoxedUint, ) -> <Odd<BoxedUint> as Gcd<BoxedUint>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd<Int<LIMBS>> for Odd<Int<LIMBS>>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd(&self, rhs: &Int<LIMBS>) -> <Odd<Int<LIMBS>> as Gcd<Int<LIMBS>>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &Int<LIMBS>, ) -> <Odd<Int<LIMBS>> as Gcd<Int<LIMBS>>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl Gcd<Limb> for Odd<Limb>

Source§

type Output = Limb

Output type.
Source§

fn gcd(&self, rhs: &Limb) -> <Odd<Limb> as Gcd<Limb>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime(&self, rhs: &Limb) -> <Odd<Limb> as Gcd<Limb>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd<NonZero<Uint<LIMBS>>> for Odd<Uint<LIMBS>>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd( &self, rhs: &NonZero<Uint<LIMBS>>, ) -> <Odd<Uint<LIMBS>> as Gcd<NonZero<Uint<LIMBS>>>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &NonZero<Uint<LIMBS>>, ) -> <Odd<Uint<LIMBS>> as Gcd<NonZero<Uint<LIMBS>>>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd<Odd<Int<LIMBS>>> for Uint<LIMBS>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd( &self, rhs: &Odd<Int<LIMBS>>, ) -> <Uint<LIMBS> as Gcd<Odd<Int<LIMBS>>>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &Odd<Int<LIMBS>>, ) -> <Uint<LIMBS> as Gcd<Odd<Int<LIMBS>>>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd<Odd<Uint<LIMBS>>> for Uint<LIMBS>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd( &self, rhs: &Odd<Uint<LIMBS>>, ) -> <Uint<LIMBS> as Gcd<Odd<Uint<LIMBS>>>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &Odd<Uint<LIMBS>>, ) -> <Uint<LIMBS> as Gcd<Odd<Uint<LIMBS>>>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd<Uint<LIMBS>> for Odd<Int<LIMBS>>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd( &self, rhs: &Uint<LIMBS>, ) -> <Odd<Int<LIMBS>> as Gcd<Uint<LIMBS>>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &Uint<LIMBS>, ) -> <Odd<Int<LIMBS>> as Gcd<Uint<LIMBS>>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd<Uint<LIMBS>> for Odd<Uint<LIMBS>>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd( &self, rhs: &Uint<LIMBS>, ) -> <Odd<Uint<LIMBS>> as Gcd<Uint<LIMBS>>>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &Uint<LIMBS>, ) -> <Odd<Uint<LIMBS>> as Gcd<Uint<LIMBS>>>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd for Odd<Int<LIMBS>>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd(&self, rhs: &Odd<Int<LIMBS>>) -> <Odd<Int<LIMBS>> as Gcd>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime(&self, rhs: &Odd<Int<LIMBS>>) -> <Odd<Int<LIMBS>> as Gcd>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Gcd for Odd<Uint<LIMBS>>

Source§

type Output = Odd<Uint<LIMBS>>

Output type.
Source§

fn gcd(&self, rhs: &Odd<Uint<LIMBS>>) -> <Odd<Uint<LIMBS>> as Gcd>::Output

Compute the greatest common divisor of self and rhs.
Source§

fn gcd_vartime( &self, rhs: &Odd<Uint<LIMBS>>, ) -> <Odd<Uint<LIMBS>> as Gcd>::Output

Compute the greatest common divisor of self and rhs in variable time.
Source§

impl<T> Hash for Odd<T>
where T: Hash + ?Sized,

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<T> LowerHex for Odd<T>
where T: LowerHex + ?Sized,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<T> Mul for Odd<T>
where T: Mul<Output = T>,

Any odd integer multiplied by another odd integer is definitionally odd.

Source§

type Output = Odd<T>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Odd<T>) -> Odd<T>

Performs the * operation. Read more
Source§

impl<T> Octal for Odd<T>
where T: Octal + ?Sized,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<T> One for Odd<T>
where T: One,

Source§

fn one() -> Odd<T>

Returns the multiplicative identity element of Self, 1.
Source§

fn is_one(&self) -> Choice

Determine if this value is equal to 1. Read more
Source§

fn set_one(&mut self)

Set self to its multiplicative identity, i.e. Self::one.
Source§

fn one_like(_other: &Self) -> Self

Return the value 0 with the same precision as other.
Source§

impl<T> One for Odd<T>
where T: One + Mul<Output = T>,

Source§

fn one() -> Odd<T>

Returns the multiplicative identity element of Self, 1. Read more
Source§

fn is_one(&self) -> bool

Returns true if self is equal to the multiplicative identity. Read more
Source§

fn set_one(&mut self)

Sets self to the multiplicative identity element of Self, 1.
Source§

impl<T> Ord for Odd<T>
where T: Ord + ?Sized,

Source§

fn cmp(&self, other: &Odd<T>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<const LIMBS: usize> PartialEq<Odd<Uint<LIMBS>>> for Uint<LIMBS>

Source§

fn eq(&self, other: &Odd<Uint<LIMBS>>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T> PartialEq for Odd<T>
where T: PartialEq + ?Sized,

Source§

fn eq(&self, other: &Odd<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<const LIMBS: usize> PartialOrd<Odd<Uint<LIMBS>>> for Uint<LIMBS>

Source§

fn partial_cmp(&self, other: &Odd<Uint<LIMBS>>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<T> PartialOrd for Odd<T>
where T: PartialOrd + ?Sized,

Source§

fn partial_cmp(&self, other: &Odd<T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<const LIMBS: usize> Random for Odd<Uint<LIMBS>>

Available on crate feature rand_core only.
Source§

fn try_random_from_rng<R>( rng: &mut R, ) -> Result<Odd<Uint<LIMBS>>, <R as TryRng>::Error>
where R: TryRng + ?Sized,

Generate a random Odd<Uint<T>>.

Source§

fn random_from_rng<R>(rng: &mut R) -> Self
where R: Rng + ?Sized,

Generate a random value. Read more
Source§

fn try_random() -> Result<Self, Error>

Randomly generate a value of this type using the system’s ambient cryptographically secure random number generator. Read more
Source§

fn random() -> Self

Randomly generate a value of this type using the system’s ambient cryptographically secure random number generator. Read more
Source§

impl Resize for &Odd<BoxedUint>

Available on crate feature alloc only.
Source§

type Output = Odd<BoxedUint>

The result of the resizing.
Source§

fn resize_unchecked( self, at_least_bits_precision: u32, ) -> <&Odd<BoxedUint> as Resize>::Output

Resizes to the minimum storage that fits at_least_bits_precision without checking if the bit size of self is larger than at_least_bits_precision. Read more
Source§

fn try_resize( self, at_least_bits_precision: u32, ) -> Option<<&Odd<BoxedUint> as Resize>::Output>

Resizes to the minimum storage that fits at_least_bits_precision returning None if the bit size of self is larger than at_least_bits_precision. Read more
Source§

fn resize(self, at_least_bits_precision: u32) -> Self::Output

Resizes to the minimum storage that fits at_least_bits_precision panicking if the bit size of self is larger than at_least_bits_precision. Read more
Source§

impl Resize for Odd<BoxedUint>

Available on crate feature alloc only.
Source§

type Output = Odd<BoxedUint>

The result of the resizing.
Source§

fn resize_unchecked( self, at_least_bits_precision: u32, ) -> <Odd<BoxedUint> as Resize>::Output

Resizes to the minimum storage that fits at_least_bits_precision without checking if the bit size of self is larger than at_least_bits_precision. Read more
Source§

fn try_resize( self, at_least_bits_precision: u32, ) -> Option<<Odd<BoxedUint> as Resize>::Output>

Resizes to the minimum storage that fits at_least_bits_precision returning None if the bit size of self is larger than at_least_bits_precision. Read more
Source§

fn resize(self, at_least_bits_precision: u32) -> Self::Output

Resizes to the minimum storage that fits at_least_bits_precision panicking if the bit size of self is larger than at_least_bits_precision. Read more
Source§

impl<T> UpperHex for Odd<T>
where T: UpperHex + ?Sized,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<const LIMBS: usize> Xgcd for Odd<Int<LIMBS>>

Source§

type Output = XgcdOutput<LIMBS, Odd<Uint<LIMBS>>>

Output type.
Source§

fn xgcd(&self, rhs: &Odd<Int<LIMBS>>) -> <Odd<Int<LIMBS>> as Xgcd>::Output

Compute the extended greatest common divisor of self and rhs.
Source§

fn xgcd_vartime( &self, rhs: &Odd<Int<LIMBS>>, ) -> <Odd<Int<LIMBS>> as Xgcd>::Output

Compute the extended greatest common divisor of self and rhs in variable time.
Source§

impl<const LIMBS: usize> Xgcd for Odd<Uint<LIMBS>>

Source§

type Output = XgcdOutput<LIMBS, Odd<Uint<LIMBS>>>

Output type.
Source§

fn xgcd(&self, rhs: &Odd<Uint<LIMBS>>) -> <Odd<Uint<LIMBS>> as Xgcd>::Output

Compute the extended greatest common divisor of self and rhs.
Source§

fn xgcd_vartime( &self, rhs: &Odd<Uint<LIMBS>>, ) -> <Odd<Uint<LIMBS>> as Xgcd>::Output

Compute the extended greatest common divisor of self and rhs in variable time.
Source§

impl<T> Zeroize for Odd<T>
where T: Zeroize + One,

Available on crate feature zeroize only.
Source§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.
Source§

impl<T> Copy for Odd<T>
where T: Copy + ?Sized,

Source§

impl<T> Eq for Odd<T>
where T: Eq + ?Sized,

Source§

impl<T> StructuralPartialEq for Odd<T>
where T: ?Sized,

Auto Trait Implementations§

§

impl<T> Freeze for Odd<T>
where T: Freeze + ?Sized,

§

impl<T> RefUnwindSafe for Odd<T>
where T: RefUnwindSafe + ?Sized,

§

impl<T> Send for Odd<T>
where T: Send + ?Sized,

§

impl<T> Sync for Odd<T>
where T: Sync + ?Sized,

§

impl<T> Unpin for Odd<T>
where T: Unpin + ?Sized,

§

impl<T> UnsafeUnpin for Odd<T>
where T: UnsafeUnpin + ?Sized,

§

impl<T> UnwindSafe for Odd<T>
where T: UnwindSafe + ?Sized,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, const N: usize> CtSelectArray<N> for T

Source§

fn ct_select_array(a: &[T; N], b: &[T; N], choice: Choice) -> [T; N]

Select between a and b in constant-time based on choice.
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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.