salsa/
lib.rs

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/// Internal names used by salsa macros.
70///
71/// # WARNING
72///
73/// The contents of this module are NOT subject to semver.
74#[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}