#u128 #i128 #primitive

no-std extprim

扩展原始类型(u128,i128)

24个版本 (14个稳定)

使用旧的Rust 2015

1.7.1 2020年5月30日
1.7.0 2019年4月21日
1.6.0 2018年5月13日
1.5.1 2018年1月14日
0.5.1 2015年3月21日

#527 in 算法

Download history 1210/week @ 2023-11-29 1413/week @ 2023-12-06 1247/week @ 2023-12-13 1066/week @ 2023-12-20 1457/week @ 2023-12-27 1577/week @ 2024-01-03 1475/week @ 2024-01-10 1643/week @ 2024-01-17 1872/week @ 2024-01-24 3518/week @ 2024-01-31 3455/week @ 2024-02-07 3219/week @ 2024-02-14 1765/week @ 2024-02-21 1073/week @ 2024-02-28 994/week @ 2024-03-06 800/week @ 2024-03-13

5,197每月下载量
用于 54 个crate(7 个直接使用)

MIT/Apache

190KB
3.5K SLoC

extprim

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

感谢 RFC 1504 “int128”,您可以从1.16版本开始直接在nightly Rust中使用i128u128。建议使用内置类型。

稳定Rust的扩展原始类型。目前包括

  • u128(无符号128位整数)
  • i128(有符号128位整数)

文档

您还可能在其他crate中找到其他原始类型

用法

# Cargo.toml
[dependencies]
extprim = "1"

如果您想使用u128!()i128!()宏,请包含extprim_literals插件。

# Cargo.toml
[dependencies]
extprim = "1"
extprim_literals = "2"

示例

#[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);
}

依赖关系

~1.1–2MB
~38K SLoC