#primitive #ethereum

laron-primitives

Ethereum 的 Rust 原语

1 个不稳定版本

0.1.0 2022年9月22日

#14 in #primitives

GPL-3.0-or-later

44KB
1K SLoC

原语

build License: GPL v3 crates.io

Ethereum 的 Rust 原语类型。

这个crate是不稳定的,可能有很多bug,我建议不要使用它。

用法

[dependencies]
laron_primitives = "0.1"
use laron_primitives::*;

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

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

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

use laron_primitives::*;

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 laron_primitives::*;

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

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

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

use laron_primitives::*;

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

assert_eq!(c, 200);

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


use laron_primitives::*;

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