#primitives #u128 #i128

extprim

Extra primitive types (u128, i128)

22 releases (11 stable)

1.5.1 Jan 14, 2018
1.4.0 Jul 11, 2017
1.2.2 Mar 18, 2017
1.1.1 Jul 14, 2016
0.5.1 Mar 21, 2015

#10 in Algorithms

Download history 2302/week @ 2018-05-27 4087/week @ 2018-06-03 1556/week @ 2018-06-10 1529/week @ 2018-06-17 1481/week @ 2018-06-24 2789/week @ 2018-07-01 2456/week @ 2018-07-08 3019/week @ 2018-07-15 2960/week @ 2018-07-22 2419/week @ 2018-07-29 2707/week @ 2018-08-05 2260/week @ 2018-08-12 1882/week @ 2018-08-19

10,239 downloads per month
Used in 37 crates (5 directly)

MIT/Apache

186KB
3.5K SLoC

extprim

Travis (Linux and OS X) Build status AppVeyor (Windows) Build status Coverage Status crates.io MIT / Apache 2.0

Thanks to RFC 1504 “int128”, you can use i128 and u128 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)

Documentation

You may also find other primitive types in other crates:

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

~2.5MB
~39K SLoC