#primitive #primitive-integer #u128 #i128

extprim_literals

用于创建额外原始类型字面量(u128!(n), i128!(n))的插件

10个版本 (稳定版)

使用旧的Rust 2015

2.0.3 2017年7月11日
2.0.2 2017年6月16日
2.0.0 2017年3月18日
1.2.0 2017年1月12日
0.2.2 2015年1月10日

#2071 in Rust模式

27每月下载量
用于 2 crate

MIT/Apache

195KB
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);
}

lib.rs:

extprim的字面量宏。

此crate提供了一个语法扩展(在稳定版),使得可以使用 i128!()u128!() 宏在编译时构建 extprim 类型。

设置

只需将 extprim_literals 添加到 Cargo.toml 中的依赖项

[dependencies]
extprim_literals = "2.0"

src/consts.rs 中使用宏

#[macro_use] extern crate extprim_literals;
extern crate extprim;
use extprim::u128::u128;

const TEN: u128 = u128!(10);

依赖项

~1–1.9MB
~34K SLoC