Rust Opis

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

Usage

In your Cargo.toml:

```

[dependencies] opis = "3.0.6"

```

In your Rust file:

```

use opis::{ Bit, Int, pow, modulo };

```

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); ```

Conversion Functions

From Str ```

let binaryinteger: Int = Int::frombinary("b'1010101");

let decimalinteger: Int = Int::fromdecimal("674755");

let hexinteger: Int = Int::fromhex("0x00ABC012");

```

To Str ```

let binarystr: String = integer1.to_binary();

let decimalstr: String = integer2.to_decimal();

let hexstr: String = integer3.to_hex(); ```

From Bytes ```

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

```

To Bytes ```

let bytes: Vec = integer.to_bytes();

let extbytes: Vec = integer.toext_bytes(32);

```

Linear-feedback shift register

```

let int_lsfr: Int = integer.lfsr();

```

Future

Contribution

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

2022-03-16