rustler_bigint

Crates.iorustler_bigint
lib.rsrustler_bigint
version0.1.0
sourcesrc
created_at2022-06-21 09:59:21.192723
updated_at2022-06-21 09:59:21.192723
descriptionHandle Erlang's arbitrarily-sized integers
homepage
repositoryhttps://github.com/rusterlium/rustler
max_upload_size
id610131
size19,072
Thomas Timmer (thomas9911)

documentation

README

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)
}
Commit count: 1191

cargo fmt