pub trait Arithmetic<T> {
// Required methods
fn add(&self, x: T, y: T) -> Result<T, ArithmeticError>;
fn sub(&self, x: T, y: T) -> Result<T, ArithmeticError>;
fn mul(&self, x: T, y: T) -> Result<T, ArithmeticError>;
fn div(&self, x: T, y: T) -> Result<T, ArithmeticError>;
fn pow(&self, x: T, y: T) -> Result<T, ArithmeticError>;
fn neg(&self, x: T) -> Result<T, ArithmeticError>;
fn eq(&self, x: &T, y: &T) -> bool;
}Expand description
Encapsulates arithmetic operations on a certain primitive type (or an enum of primitive types).
Unlike operations on built-in integer types, arithmetic operations may be fallible.
Additionally, the arithmetic can have a state. This is used, for example, in
ModularArithmetic, which stores the modulus in the state.
Required Methods§
Sourcefn add(&self, x: T, y: T) -> Result<T, ArithmeticError>
fn add(&self, x: T, y: T) -> Result<T, ArithmeticError>
Adds two values.
§Errors
Returns an error if the operation is unsuccessful (e.g., on integer overflow).
Sourcefn sub(&self, x: T, y: T) -> Result<T, ArithmeticError>
fn sub(&self, x: T, y: T) -> Result<T, ArithmeticError>
Subtracts two values.
§Errors
Returns an error if the operation is unsuccessful (e.g., on integer underflow).
Sourcefn mul(&self, x: T, y: T) -> Result<T, ArithmeticError>
fn mul(&self, x: T, y: T) -> Result<T, ArithmeticError>
Multiplies two values.
§Errors
Returns an error if the operation is unsuccessful (e.g., on integer overflow).
Sourcefn div(&self, x: T, y: T) -> Result<T, ArithmeticError>
fn div(&self, x: T, y: T) -> Result<T, ArithmeticError>
Divides two values.
§Errors
Returns an error if the operation is unsuccessful (e.g., if y is zero or does
not have a multiplicative inverse in the case of modular arithmetic).
Sourcefn pow(&self, x: T, y: T) -> Result<T, ArithmeticError>
fn pow(&self, x: T, y: T) -> Result<T, ArithmeticError>
Raises x to the power of y.
§Errors
Returns an error if the operation is unsuccessful (e.g., on integer overflow).
Sourcefn neg(&self, x: T) -> Result<T, ArithmeticError>
fn neg(&self, x: T) -> Result<T, ArithmeticError>
Negates a value.
§Errors
Returns an error if the operation is unsuccessful (e.g., on integer overflow).
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementors§
impl Arithmetic<BigUint> for ModularArithmetic<BigUint>
bigint only.