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