alloy_primitives/
lib.rs

1#![doc = include_str!("../README.md")]
2#![doc(
3    html_logo_url = "https://raw.githubusercontent.com/alloy-rs/core/main/assets/alloy.jpg",
4    html_favicon_url = "https://raw.githubusercontent.com/alloy-rs/core/main/assets/favicon.ico"
5)]
6#![cfg_attr(not(test), warn(unused_crate_dependencies))]
7#![cfg_attr(not(feature = "std"), no_std)]
8#![cfg_attr(feature = "nightly", feature(hasher_prefixfree_extras))]
9#![cfg_attr(feature = "nightly", feature(core_intrinsics))]
10#![cfg_attr(feature = "nightly", feature(likely_unlikely))]
11#![cfg_attr(feature = "nightly", allow(internal_features))]
12#![cfg_attr(docsrs, feature(doc_cfg))]
13
14#[macro_use]
15extern crate alloc;
16
17use paste as _;
18#[cfg(feature = "sha3-keccak")]
19use sha3 as _;
20use tiny_keccak as _;
21
22#[cfg(feature = "postgres")]
23pub mod postgres;
24
25#[cfg(feature = "diesel")]
26pub mod diesel;
27
28#[cfg(feature = "sqlx")]
29pub mod sqlx;
30
31pub mod aliases;
32#[doc(no_inline)]
33pub use aliases::{
34    B64, B128, B256, B512, BlockHash, BlockNumber, BlockTimestamp, ChainId, I8, I16, I32, I64,
35    I128, I160, I256, Selector, StorageKey, StorageValue, TxHash, TxIndex, TxNonce, TxNumber, U8,
36    U16, U32, U64, U128, U160, U256, U512,
37};
38
39#[macro_use]
40mod bits;
41pub use bits::{
42    Address, AddressChecksumBuffer, AddressError, BLOOM_BITS_PER_ITEM, BLOOM_SIZE_BITS,
43    BLOOM_SIZE_BYTES, Bloom, BloomInput, FixedBytes, Function,
44};
45#[cfg(feature = "rkyv")]
46pub use bits::{
47    AddressResolver, ArchivedAddress, ArchivedBloom, ArchivedFixedBytes, BloomResolver,
48    FixedBytesResolver,
49};
50
51#[path = "bytes/mod.rs"]
52mod bytes_;
53pub use self::bytes_::Bytes;
54
55mod common;
56pub use common::TxKind;
57
58mod log;
59pub use log::{IntoLogData, Log, LogData, logs_bloom};
60
61#[cfg(feature = "map")]
62pub mod map;
63
64mod sealed;
65pub use sealed::{Sealable, Sealed};
66
67mod signed;
68pub use signed::{BigIntConversionError, ParseSignedError, Sign, Signed};
69
70mod signature;
71pub use signature::{Signature, SignatureError, normalize_v, to_eip155_v};
72
73pub mod utils;
74pub use utils::{KECCAK256_EMPTY, Keccak256, eip191_hash_message, keccak256, keccak256_uncached};
75
76#[doc(hidden)] // Use `hex` directly instead!
77pub mod hex_literal;
78
79#[doc(inline)]
80pub use ruint::uint;
81#[doc(no_inline)]
82pub use {
83    ::bytes,
84    ::hex,
85    ruint::{self, Uint},
86};
87
88#[cfg(feature = "serde")]
89#[doc(no_inline)]
90pub use ::hex::serde as serde_hex;
91
92// Not public API.
93#[doc(hidden)]
94pub mod private {
95    pub use alloc::vec::Vec;
96    pub use core::{
97        self,
98        borrow::{Borrow, BorrowMut},
99        cmp::Ordering,
100        prelude::rust_2021::*,
101    };
102    pub use derive_more;
103
104    #[cfg(feature = "getrandom")]
105    pub use getrandom;
106
107    #[cfg(feature = "rand")]
108    pub use rand;
109
110    #[cfg(feature = "rlp")]
111    pub use alloy_rlp;
112
113    #[cfg(feature = "allocative")]
114    pub use allocative;
115
116    #[cfg(feature = "serde")]
117    pub use serde;
118
119    #[cfg(feature = "borsh")]
120    pub use borsh;
121
122    #[cfg(feature = "arbitrary")]
123    pub use {arbitrary, proptest, proptest_derive};
124
125    #[cfg(feature = "diesel")]
126    pub use diesel;
127
128    #[cfg(feature = "sqlx")]
129    pub use sqlx_core;
130}