extprim
extprim copied to clipboard
Extra primitive types (u128, i128) for Rust.
extprim
Thanks to RFC 1504 “int128”, you can use
i128andu128directly on nightly Rust starting from 1.16. Using the built-in types are preferred.
Extra primitive types for stable Rust. Currently includes:
u128(unsigned 128-bit integers)i128(signed 128-bit integers)
You may also find other primitive types in other crates:
u12→ twelve_bitf16→ halfd128→ decimalComplex<T>→ num-complex
Usage
# Cargo.toml
[dependencies]
extprim = "1"
If you want to use the u128!() and i128!() macros, please include the extprim_literals plugin.
# Cargo.toml
[dependencies]
extprim = "1"
extprim_literals = "2"
Example
#[macro_use]
extern crate extprim_literals;
extern crate extprim;
use std::str::FromStr;
use extprim::i128::i128;
fn main() {
let a = i128::from_str("100000000000000000000000000000000000000").unwrap();
// convert string to u128 or i128
let b = i128::new(10).pow(38);
// 64-bit integers can be directly new'ed
assert_eq!(a, b);
let c = i128::from_parts(5421010862427522170, 687399551400673280);
// represent using the higher- and lower-64-bit parts
let d = c - a;
// standard operators like +, -, *, /, %, etc. work as expected.
assert_eq!(d, i128::zero());
const e: i128 = i128!(100000000000000000000000000000000000000);
// use the literal macros
assert_eq!(a, e);
}