1#![deny(clippy::all, clippy::pedantic, clippy::disallowed_methods)]
2#![allow(
4 let_underscore_drop,
5 clippy::default_trait_access,
6 clippy::if_not_else,
7 clippy::inline_always,
8 clippy::iter_not_returning_iterator,
9 clippy::manual_let_else,
10 clippy::missing_errors_doc,
11 clippy::missing_panics_doc,
12 clippy::module_name_repetitions,
13 clippy::must_use_candidate,
14 clippy::needless_pass_by_value,
15 clippy::option_option,
16 clippy::redundant_closure_for_method_calls,
17 clippy::similar_names,
18 clippy::too_many_lines,
19 clippy::unnecessary_wraps,
20 clippy::unreadable_literal,
21 clippy::wildcard_imports
22)]
23#![cfg_attr(target_os = "wasi", feature(wasi_ext))]
25
26pub use db::{
71 Builder, Database, MultimapTableDefinition, MultimapTableHandle, RepairSession, StorageBackend,
72 TableDefinition, TableHandle, UntypedMultimapTableHandle, UntypedTableHandle,
73};
74pub use error::{
75 CommitError, CompactionError, DatabaseError, Error, SavepointError, StorageError, TableError,
76 TransactionError,
77};
78pub use multimap_table::{
79 MultimapRange, MultimapTable, MultimapValue, ReadOnlyMultimapTable,
80 ReadOnlyUntypedMultimapTable, ReadableMultimapTable,
81};
82pub use table::{
83 ExtractIf, Range, ReadOnlyTable, ReadOnlyUntypedTable, ReadableTable, ReadableTableMetadata,
84 Table, TableStats,
85};
86pub use transactions::{DatabaseStats, Durability, ReadTransaction, WriteTransaction};
87pub use tree_store::{AccessGuard, AccessGuardMut, Savepoint};
88pub use types::{Key, MutInPlaceValue, TypeName, Value};
89
90pub type Result<T = (), E = StorageError> = std::result::Result<T, E>;
91
92#[cfg(feature = "python")]
93pub use crate::python::redb;
94
95pub mod backends;
96mod complex_types;
97mod db;
98mod error;
99mod multimap_table;
100#[cfg(feature = "python")]
101mod python;
102mod sealed;
103mod table;
104mod transaction_tracker;
105mod transactions;
106mod tree_store;
107mod tuple_types;
108mod types;
109
110#[cfg(test)]
111fn create_tempfile() -> tempfile::NamedTempFile {
112 if cfg!(target_os = "wasi") {
113 tempfile::NamedTempFile::new_in("/tmp").unwrap()
114 } else {
115 tempfile::NamedTempFile::new().unwrap()
116 }
117}