52 releases (1 stable)

1.0.0 Apr 3, 2025
1.0.0-rc.1 Mar 26, 2025
0.8.25 Mar 26, 2025
0.8.15 Dec 9, 2024
0.3.1 Jul 30, 2023

#1 in #ethers

Download history 55629/week @ 2024-12-25 100321/week @ 2025-01-01 137753/week @ 2025-01-08 161356/week @ 2025-01-15 148965/week @ 2025-01-22 142329/week @ 2025-01-29 166481/week @ 2025-02-05 181329/week @ 2025-02-12 149926/week @ 2025-02-19 133865/week @ 2025-02-26 137553/week @ 2025-03-05 152868/week @ 2025-03-12 151749/week @ 2025-03-19 153700/week @ 2025-03-26 145010/week @ 2025-04-02 145012/week @ 2025-04-09

624,619 downloads per month
Used in 577 crates (216 directly)

MIT/Apache

370KB
8K SLoC

alloy-primitives

Primitive types shared by alloy, foundry, revm, and reth.

Types

  • Unsigned integers re-exported from ruint
  • Signed integers, as a wrapper around ruint integers
  • Fixed-size byte arrays via FixedBytes
    • wrap_fixed_bytes!: macro for constructing named fixed bytes types
    • Address, which is a fixed-size byte array of 20 bytes, with EIP-55 and EIP-1191 checksum support
    • fixed_bytes!, address! and other macros to construct the types at compile time

Examples

This library has straightforward, basic, types. Usage is correspondingly simple. Please consult the documentation for more information.

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

// FixedBytes
let n: FixedBytes<6> = fixed_bytes!("0x1234567890ab");
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!("0x66f9664f97F2b50F62D13eA064982f936dE76657"));
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!("0x66F9664f97f2B50F62d13EA064982F936de76657"));
assert_eq!(addr.to_checksum(Some(30)), addr_str);

Dependencies

~4–8.5MB
~163K SLoC