1 unstable release
0.1.0 | Jun 21, 2022 |
---|
#46 in #big-integer
280KB
6K
SLoC
Rustler BigInt
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