Trait arithmetic_eval::arith::Arithmetic
source · 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).