24 releases (14 stable)
Uses old Rust 2015
1.7.1 | May 30, 2020 |
---|---|
1.7.0 | Apr 21, 2019 |
1.6.0 | May 13, 2018 |
1.5.1 | Jan 14, 2018 |
0.5.1 | Mar 21, 2015 |
#637 in Algorithms
4,390 downloads per month
Used in 58 crates
(7 directly)
190KB
3.5K
SLoC
extprim
Thanks to RFC 1504 “int128”, you can use
i128
andu128
directly 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);
}
Dependencies
~1–1.9MB
~35K SLoC