#primitive #ethereum #revm #reth #ethers #signed-integer

无需std linera-alloy-primitives

Ethereum基本类型

1个不稳定版本

0.7.4 2024年5月30日

#1597 in 魔法豆

Download history 153/week @ 2024-05-27 111/week @ 2024-06-03 81/week @ 2024-06-10 90/week @ 2024-06-17 25/week @ 2024-06-24 85/week @ 2024-07-01 45/week @ 2024-07-08 116/week @ 2024-07-15 84/week @ 2024-07-22 106/week @ 2024-07-29

353次每月下载
用于 35 个crate(27直接)

MIT/Apache

340KB
7K SLoC

linera-alloy-primitives

alloyfoundryrevmreth共享的基本类型。

类型

  • ruint重新导出的无符号整数
  • 有符号整数,作为ruint整数的包装
  • 通过FixedBytes进行固定大小的字节数组
    • wrap_fixed_bytes!:用于构建命名固定字节数类型的宏
    • Address,它是一个20字节的固定大小字节数组,具有EIP-55和EIP-1191校验和支持
    • fixed_bytes!address!和其他宏在编译时构建类型

示例

此库具有简单、基本类型。使用方法相应简单。请参阅文档以获取更多信息。

use linera_alloy_primitives::{address, fixed_bytes, Address, FixedBytes, I256, U256};

// FixedBytes
let n: FixedBytes<6> = fixed_bytes!("1234567890ab");
assert_eq!(n, "0x1234567890ab".parse::<FixedBytes<6>>().unwrap());
assert_eq!(n.to_string(), "0x1234567890ab");

// Uint
let mut n: U256 = "42".parse().unwrap();
n += U256::from(10);
assert_eq!(n.to_string(), "52");

// Signed
let mut n: I256 = "-42".parse().unwrap();
n = -n;
assert_eq!(n.to_string(), "42");

// Address
let addr_str = "0x66f9664f97F2b50F62D13eA064982f936dE76657";
let addr: Address = Address::parse_checksummed(addr_str, None).unwrap();
assert_eq!(addr, address!("66f9664f97F2b50F62D13eA064982f936dE76657"));
assert_eq!(addr.to_checksum(None), addr_str);

// Address checksummed with a custom chain id
let addr_str = "0x66F9664f97f2B50F62d13EA064982F936de76657";
let addr: Address = Address::parse_checksummed(addr_str, Some(30)).unwrap();
assert_eq!(addr, address!("66F9664f97f2B50F62d13EA064982F936de76657"));
assert_eq!(addr.to_checksum(Some(30)), addr_str);

依赖关系

~3.5–6.5MB
~138K SLoC