Skip to main content

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", allow(internal_features))]
11#![cfg_attr(docsrs, feature(doc_cfg))]
12
13#[macro_use]
14extern crate alloc;
15
16use paste as _;
17use sha3 as _;
18#[cfg(feature = "tiny-keccak")]
19use tiny_keccak as _;
20
21#[cfg(feature = "postgres")]
22pub mod postgres;
23
24#[cfg(feature = "diesel")]
25pub mod diesel;
26
27#[cfg(feature = "sqlx")]
28pub mod sqlx;
29
30pub mod aliases;
31#[doc(no_inline)]
32pub use aliases::{
33    B64, B128, B256, B512, BlockHash, BlockNumber, BlockTimestamp, ChainId, I8, I16, I32, I64,
34    I128, I160, I256, Selector, StorageKey, StorageValue, TxHash, TxIndex, TxNonce, TxNumber, U8,
35    U16, U32, U64, U128, U160, U256, U512,
36};
37
38#[macro_use]
39mod bits;
40pub use bits::{
41    Address, AddressChecksumBuffer, AddressError, BLOOM_BITS_PER_ITEM, BLOOM_SIZE_BITS,
42    BLOOM_SIZE_BYTES, Bloom, BloomInput, FixedBytes, FixedBytesSliceExt, FixedBytesVecExt,
43    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;
74#[cfg(feature = "keccak-cache")]
75pub use utils::init_keccak_cache;
76pub use utils::{KECCAK256_EMPTY, Keccak256, eip191_hash_message, keccak256, keccak256_uncached};
77
78#[doc(hidden)] // Use `hex` directly instead!
79pub mod hex_literal;
80
81#[doc(inline)]
82pub use ruint::uint;
83#[doc(no_inline)]
84pub use {
85    ::bytes,
86    ::hex,
87    ruint::{self, Uint},
88};
89
90#[cfg(feature = "serde")]
91#[doc(no_inline)]
92pub use ::hex::serde as serde_hex;
93
94// Not public API.
95#[doc(hidden)]
96pub mod private {
97    pub use alloc::{borrow::Cow, vec::Vec};
98    pub use core::{
99        self,
100        borrow::{Borrow, BorrowMut},
101        cmp::Ordering,
102        prelude::rust_2021::*,
103    };
104    pub use derive_more;
105
106    #[cfg(feature = "getrandom")]
107    pub use getrandom;
108
109    #[cfg(feature = "rand")]
110    pub use rand;
111
112    #[cfg(feature = "rlp")]
113    pub use alloy_rlp;
114
115    #[cfg(feature = "allocative")]
116    pub use allocative;
117
118    #[cfg(feature = "serde")]
119    pub use serde;
120
121    #[cfg(feature = "borsh")]
122    pub use borsh;
123
124    #[cfg(feature = "arbitrary")]
125    pub use {arbitrary, proptest, proptest_derive};
126
127    #[cfg(feature = "diesel")]
128    pub use diesel;
129
130    #[cfg(feature = "sqlx")]
131    pub use sqlx_core;
132
133    #[cfg(feature = "schemars")]
134    pub use schemars;
135}