#![deny(clippy::all, clippy::pedantic, clippy::disallowed_methods)]
#![allow(
let_underscore_drop,
clippy::default_trait_access,
clippy::if_not_else,
clippy::inline_always,
clippy::iter_not_returning_iterator,
clippy::manual_let_else,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
clippy::module_name_repetitions,
clippy::must_use_candidate,
clippy::needless_pass_by_value,
clippy::option_option,
clippy::redundant_closure_for_method_calls,
clippy::result_large_err,
clippy::similar_names,
clippy::too_many_lines,
clippy::unnecessary_wraps,
clippy::unreadable_literal,
clippy::wildcard_imports
)]
#![cfg_attr(target_os = "wasi", feature(wasi_ext))]
pub use db::{
Builder, CacheStats, Database, MultimapTableDefinition, MultimapTableHandle, RepairSession,
StorageBackend, TableDefinition, TableHandle, UntypedMultimapTableHandle, UntypedTableHandle,
};
pub use error::{
CommitError, CompactionError, DatabaseError, Error, SavepointError, StorageError, TableError,
TransactionError, UpgradeError,
};
pub use multimap_table::{
MultimapRange, MultimapTable, MultimapValue, ReadOnlyMultimapTable,
ReadOnlyUntypedMultimapTable, ReadableMultimapTable,
};
pub use table::{
ExtractIf, Range, ReadOnlyTable, ReadOnlyUntypedTable, ReadableTable, ReadableTableMetadata,
Table, TableStats,
};
pub use transactions::{DatabaseStats, Durability, ReadTransaction, WriteTransaction};
pub use tree_store::{AccessGuard, AccessGuardMut, Savepoint};
pub use types::{Key, MutInPlaceValue, TypeName, Value};
pub type Result<T = (), E = StorageError> = std::result::Result<T, E>;
#[cfg(feature = "python")]
pub use crate::python::redb;
pub mod backends;
mod complex_types;
mod db;
mod error;
mod multimap_table;
pub mod page_crypto;
#[cfg(feature = "python")]
mod python;
mod sealed;
mod table;
mod transaction_tracker;
mod transactions;
mod tree_store;
mod tuple_types;
mod types;
pub use page_crypto::{
Aes256GcmPageCrypto, DictionaryTrainer, NoOpPageCompression, NoOpPageCrypto, PageCompression,
PageCrypto, ZstdDictPageCompression, ZstdPageCompression,
};
#[cfg(test)]
fn create_tempfile() -> tempfile::NamedTempFile {
if cfg!(target_os = "wasi") {
tempfile::NamedTempFile::new_in("/tmp").unwrap()
} else {
tempfile::NamedTempFile::new().unwrap()
}
}