#ethereum #u256 #eth-types

un-prim

自定义原语类型

3 个版本

0.1.2 2022年9月6日
0.1.1 2022年9月1日
0.1.0 2022年9月1日

#4#u256


用于 owl-crypto

GPL-3.0-or-later

44KB
1K SLoC

UN-PRIM

build License: GPL v3 crates.io

为任何 Rust 项目提供不寻常的原语类型。

这个包是不稳定的,可能存在很多错误,我建议不要使用它。

用法

[dependencies]
un-prim = "0.1"
use un_prim::*;

let x: U256 = 100u128.into();
let y: U256 = 2u128.into();
let z = x * y;

assert_eq!(200u64, z.into());

要创建新类型,您可以使用宏 define!

use un_prim::*;

define!(U512, 64, "512-bits custom type.");

let x: U512 = 100u8.into();

assert_eq!(x * 2u8.into(), 200u8.into());

待办事项

  • 为每种类型添加 Pow/Exp 方法。
  • 为每种类型添加 SQRT 方法。

lib.rs:

unprim 包含从 8 位到 256 位的原语类型。它是不稳定的,不建议用于生产。

use un_prim::*;

let a = U256::from(100);
let b = U256::from(2);

assert_eq!(a * b, 200u64.into());

或者您可以使用 .into() 方法来初始化这些类型。

use un_prim::*;

let a: U24 = 100u64.into();
let b: U24 = 2u64.into();
let c: u32 = (a * b).into();

assert_eq!(c, 200);

您可以使用宏来定义新类型。例如,如果您想定义一个 512 位的类型,您可以使用该宏。


use un_prim::*;

define!(U512, 64, "512 bit");

let a = U512::from(100);
let b = U512::from(2);
let c = a * b;
assert_eq!(c, 200u64.into());

依赖关系

~110–350KB