10个版本 (6个稳定版)

1.2.1 2024年6月3日
1.2.0 2024年2月27日
1.1.0 2023年7月25日
1.0.2 2022年11月1日
0.1.1 2022年5月15日

#1338 in 数学

Download history 45030/week @ 2024-04-26 45692/week @ 2024-05-03 49766/week @ 2024-05-10 45745/week @ 2024-05-17 53179/week @ 2024-05-24 51082/week @ 2024-05-31 47526/week @ 2024-06-07 52996/week @ 2024-06-14 62627/week @ 2024-06-21 49886/week @ 2024-06-28 52328/week @ 2024-07-05 61440/week @ 2024-07-12 67355/week @ 2024-07-19 61072/week @ 2024-07-26 61181/week @ 2024-08-02 64398/week @ 2024-08-09

266,200 每月下载量
用于 264 个crate(2个直接使用)

MIT 协议

14KB
235

uint!Bits字面量提供的宏

uint!宏的参数中,您可以使用与Rust整数字面量相同的语法来编写UintBits字面量,分别使用大写UB后缀。注意,对于带有B后缀的十六进制数存在歧义,在这种情况下需要一个下划线以减轻影响。

要使用它,只需在作用域中导入即可

use ruint::uint;

现在可以创建十进制、十六进制、二进制甚至八进制常量

# use ruint::uint;
let avogadro = uint!(602_214_076_000_000_000_000_000_U256);
let cow_key = uint!(0xee79b5f6e221356af78cf4c36f4f7885a11b67dfcc81c34d80249947330c0f82_U256);
let bender = uint!(0b1010011010_U10);

uint!宏会递归遍历解析树,因此上述内容可以等效地写成

# use ruint::uint;
uint! {
let avogadro = 602_214_076_000_000_000_000_000_U256;
let cow_key = 0xee79b5f6e221356af78cf4c36f4f7885a11b67dfcc81c34d80249947330c0f82_U256;
let bender = 0b1010011010_U10;
}

这种形式对于查找表特别有用

# use ruint::{Uint, uint};
const PRIMES: [Uint<128, 2>; 3] = uint!([
    170141183460469231731687303715884105757_U128,
    170141183460469231731687303715884105773_U128,
    170141183460469231731687303715884105793_U128,
]);

如果您尝试创建不适用于类型的常量,宏将在编译时引发错误

# use ruint::uint;
# uint! {
let sparta = 300_U8;
# }
error: Value too large for Uint<8>: 300
 --> src/example.rs:1:14
  |
1 | let sparta = 300_U8;
  |              ^^^^^^

参考文献

无运行时依赖