mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-04-08 03:01:12 -04:00
71 lines
2.4 KiB
Rust
71 lines
2.4 KiB
Rust
//! Collection of traits and trait implementations for common database operations.
|
|
//!
|
|
//! ## Feature Flags
|
|
//!
|
|
//! - `test-utils`: Export utilities for testing
|
|
|
|
#![doc(
|
|
html_logo_url = "https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-docs.png",
|
|
html_favicon_url = "https://avatars0.githubusercontent.com/u/97369466?s=256",
|
|
issue_tracker_base_url = "https://github.com/paradigmxyz/reth/issues/"
|
|
)]
|
|
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
|
|
#![cfg_attr(docsrs, feature(doc_cfg))]
|
|
|
|
/// Various provider traits.
|
|
mod traits;
|
|
pub use traits::*;
|
|
|
|
/// Provider trait implementations.
|
|
pub mod providers;
|
|
pub use providers::{
|
|
DatabaseProvider, DatabaseProviderRO, DatabaseProviderRW, HistoricalStateProvider,
|
|
HistoricalStateProviderRef, LatestStateProvider, LatestStateProviderRef, ProviderFactory,
|
|
SaveBlocksMode, StaticFileAccess, StaticFileProviderBuilder, StaticFileWriteCtx,
|
|
StaticFileWriter,
|
|
};
|
|
|
|
pub mod changeset_walker;
|
|
pub mod changesets_utils;
|
|
|
|
#[cfg(any(test, feature = "test-utils"))]
|
|
/// Common test helpers for mocking the Provider.
|
|
pub mod test_utils;
|
|
|
|
pub mod either_writer;
|
|
pub use either_writer::*;
|
|
|
|
pub use reth_chain_state::{
|
|
CanonStateNotification, CanonStateNotificationSender, CanonStateNotificationStream,
|
|
CanonStateNotifications, CanonStateSubscriptions,
|
|
};
|
|
pub use reth_execution_types::*;
|
|
/// Re-export `OriginalValuesKnown`
|
|
pub use revm_database::states::OriginalValuesKnown;
|
|
// reexport traits to avoid breaking changes
|
|
pub use reth_static_file_types as static_file;
|
|
pub use reth_storage_api::{
|
|
HistoryWriter, MetadataProvider, MetadataWriter, StateWriteConfig, StatsReader,
|
|
StorageSettings, StorageSettingsCache,
|
|
};
|
|
/// Re-export provider error.
|
|
pub use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
|
pub use static_file::StaticFileSegment;
|
|
|
|
/// Converts a [`RangeBounds`](std::ops::RangeBounds) into a concrete [`Range`](std::ops::Range)
|
|
pub fn to_range<R: std::ops::RangeBounds<u64>>(bounds: R) -> std::ops::Range<u64> {
|
|
let start = match bounds.start_bound() {
|
|
std::ops::Bound::Included(&v) => v,
|
|
std::ops::Bound::Excluded(&v) => v + 1,
|
|
std::ops::Bound::Unbounded => 0,
|
|
};
|
|
|
|
let end = match bounds.end_bound() {
|
|
std::ops::Bound::Included(&v) => v + 1,
|
|
std::ops::Bound::Excluded(&v) => v,
|
|
std::ops::Bound::Unbounded => u64::MAX,
|
|
};
|
|
|
|
start..end
|
|
}
|