Rust Opis

Opis is an arithmetic library for integer numbers written in Rust.

Usage

In your Cargo.toml:

[dependencies] opis = "2.1.0"

In your Rust file:

use opis::Int;

Features

API

Operators

Add let sum: Int = a + b;

AddAssign let total: Int = a += b;

Sub let sum: Int = a - b;

SubAssign let reduced: Int = a -= b;

Mul let product: Int = a * b;

Div let quotient: Int = a / b;

Rem let rem: Int = a % b;

Not let not_a: Int = !a;

BitAnd let a_and_b: Int = a & b;

BitOr let a_or_b: Int = a | b;

BitXor let a_xor_b: Int = a ^ b;

Eq ``` if a == b { println!("equal!") }

if a != b { println!("not equal!") } ```

Ord ``` if a > b { println!("a is greater!") }

if a < b { println!("a is less!") } ```

Arithetic Functions

Exponentiation ``` use opis::pow;

let e: Int = pow(&a, &b); ```

Modulo ``` use opis::modulo;

let m: Int = modulo(&a, &b); ```

Modular multiplicative inverse ``` use opis::mod_inv;

let i: Int = mod_inv(&a, &b); ```

Conversion Functions

From Str ``` let binaryinteger: Int = Int::fromstr("b'1010101", 2);

let decimalinteger: Int = Int::fromstr("674755", 10);

let hexinteger: Int = Int::fromstr("0xABC012", 16); ```

To Str ``` let binarystr: String = integer1.to_str(2);

let decimalstr: String = integer2.to_str(10);

let hexstr: String = integer3.to_str(16); ```

From Bytes let integer: Int = Int::from_bytes(&bytes);

To Bytes let bytes: Vec<u8> = integer.to_bytes();

Future

Contribution

Pull requests, bug reports and any kind of suggestion are welcome.

2022-01-13