1#![deny(clippy::undocumented_unsafe_blocks)]
2#![forbid(unsafe_op_in_unsafe_fn)]
3
4mod accumulator;
5mod active_query;
6mod attach;
7mod cancelled;
8mod cycle;
9mod database;
10mod database_impl;
11mod durability;
12mod event;
13mod function;
14mod hash;
15mod id;
16mod ingredient;
17mod input;
18mod interned;
19mod key;
20mod memo_ingredient_indices;
21mod nonce;
22#[cfg(feature = "rayon")]
23mod parallel;
24mod return_mode;
25mod revision;
26mod runtime;
27mod salsa_struct;
28mod storage;
29mod sync;
30mod table;
31mod tracked_struct;
32mod update;
33mod views;
34mod zalsa;
35mod zalsa_local;
36
37#[cfg(feature = "rayon")]
38pub use parallel::{join, par_map};
39#[cfg(feature = "macros")]
40pub use salsa_macros::{accumulator, db, input, interned, tracked, Supertype, Update};
41
42#[cfg(feature = "salsa_unstable")]
43pub use self::database::IngredientInfo;
44
45pub use self::accumulator::Accumulator;
46pub use self::active_query::Backtrace;
47pub use self::cancelled::Cancelled;
48pub use self::cycle::CycleRecoveryAction;
49pub use self::database::{AsDynDatabase, Database};
50pub use self::database_impl::DatabaseImpl;
51pub use self::durability::Durability;
52pub use self::event::{Event, EventKind};
53pub use self::id::Id;
54pub use self::input::setter::Setter;
55pub use self::key::DatabaseKeyIndex;
56pub use self::return_mode::SalsaAsDeref;
57pub use self::return_mode::SalsaAsRef;
58pub use self::revision::Revision;
59pub use self::runtime::Runtime;
60pub use self::storage::{Storage, StorageHandle};
61pub use self::update::Update;
62pub use self::zalsa::IngredientIndex;
63pub use crate::attach::{attach, with_attached_database};
64
65pub mod prelude {
66 pub use crate::{Accumulator, Database, Setter};
67}
68
69#[doc(hidden)]
75pub mod plumbing {
76 pub use std::any::TypeId;
77 pub use std::option::Option::{self, None, Some};
78
79 pub use salsa_macro_rules::{
80 macro_if, maybe_backdate, maybe_default, maybe_default_tt, return_mode_expression,
81 return_mode_ty, setup_accumulator_impl, setup_input_struct, setup_interned_struct,
82 setup_tracked_assoc_fn_body, setup_tracked_fn, setup_tracked_method_body,
83 setup_tracked_struct, unexpected_cycle_initial, unexpected_cycle_recovery,
84 };
85
86 pub use crate::accumulator::Accumulator;
87 pub use crate::attach::{attach, with_attached_database};
88 pub use crate::cycle::{CycleRecoveryAction, CycleRecoveryStrategy};
89 pub use crate::database::{current_revision, Database};
90 pub use crate::durability::Durability;
91 pub use crate::id::{AsId, FromId, FromIdWithDb, Id};
92 pub use crate::ingredient::{Ingredient, Jar, Location};
93 pub use crate::key::DatabaseKeyIndex;
94 pub use crate::memo_ingredient_indices::{
95 IngredientIndices, MemoIngredientIndices, MemoIngredientMap, MemoIngredientSingletonIndex,
96 NewMemoIngredientIndices,
97 };
98 pub use crate::revision::Revision;
99 pub use crate::runtime::{stamp, Runtime, Stamp};
100 pub use crate::salsa_struct::SalsaStructInDb;
101 pub use crate::storage::{HasStorage, Storage};
102 pub use crate::tracked_struct::TrackedStructInDb;
103 pub use crate::update::helper::{Dispatch as UpdateDispatch, Fallback as UpdateFallback};
104 pub use crate::update::{always_update, Update};
105 pub use crate::zalsa::{
106 transmute_data_ptr, views, IngredientCache, IngredientIndex, Zalsa, ZalsaDatabase,
107 };
108 pub use crate::zalsa_local::ZalsaLocal;
109
110 pub mod accumulator {
111 pub use crate::accumulator::{IngredientImpl, JarImpl};
112 }
113
114 pub mod input {
115 pub use crate::input::input_field::FieldIngredientImpl;
116 pub use crate::input::setter::SetterImpl;
117 pub use crate::input::singleton::{NotSingleton, Singleton};
118 pub use crate::input::{Configuration, HasBuilder, IngredientImpl, JarImpl, Value};
119 }
120
121 pub mod interned {
122 pub use crate::interned::{
123 Configuration, HashEqLike, IngredientImpl, JarImpl, Lookup, Value,
124 };
125 }
126
127 pub mod function {
128 pub use crate::function::Configuration;
129 pub use crate::function::IngredientImpl;
130 pub use crate::function::Memo;
131 pub use crate::table::memo::MemoEntryType;
132 }
133
134 pub mod tracked_struct {
135 pub use crate::tracked_struct::tracked_field::FieldIngredientImpl;
136 pub use crate::tracked_struct::{Configuration, IngredientImpl, JarImpl, Value};
137 }
138}