1 unstable release

0.1.0 Jun 21, 2022

#3 in #bigint

MIT/Apache

220KB
4.5K SLoC

Rustler BigInt

Documentation Build Status Crates.io package version

rustler_bigint provides support for Erlang's arbitrarily-sized integers.

Installation

Add this to Cargo.toml:

[dependencies]
rustler_bigint = { version = "0.1" }

Example

Lets assume that we need to handle integers of variable size. Some might fit into Rust's i64, but others might not. For example:

large = Bitwise.bsl(2, 65) # This does not fit into i64, it is an Erlang big integer

In Rust, we can use rustler_bigint::BigInt to pass integer values of different sizes into a NIF. The type rustler_bigint::BigInt is a newtype wrapping num_bigint::BigInt and implements std::ops::Deref, so functions from num_bigint::BigInt can be called directly.

/// Simply echo `large` back to the caller.
#[rustler::nif]
pub fn handle_large(large: rustler_bigint::BigInt) -> NifResult<rustler_bigint::BigInt> {
  Ok(large)
}

Dependencies

~0.5–0.9MB
~17K SLoC