| Crates.io | rustler_bigint |
| lib.rs | rustler_bigint |
| version | 0.1.0 |
| created_at | 2022-06-21 09:59:21.192723+00 |
| updated_at | 2022-06-21 09:59:21.192723+00 |
| description | Handle Erlang's arbitrarily-sized integers |
| homepage | |
| repository | https://github.com/rusterlium/rustler |
| max_upload_size | |
| id | 610131 |
| size | 19,072 |
rustler_bigint provides support for Erlang's arbitrarily-sized integers.
Add this to Cargo.toml:
[dependencies]
rustler_bigint = { version = "0.1" }
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)
}