1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//! The 6-dimension Rust messaging framework.
//!
//! Hexeract is an opinionated messaging framework for Rust. It unifies
//! in-process mediator dispatch, multi-broker bus transport,
//! transactional outbox, sagas, scheduler and request/reply in a
//! single ergonomic crate.
//!
//! This facade re-exports every shipped sub-crate behind opt-in
//! feature flags so consumers only compile what they actually use.
//!
//! # Quick start
//!
//! Outbox over PostgreSQL:
//!
//! ```toml
//! [dependencies]
//! hexeract = { version = "0.2", features = ["outbox-postgres"] }
//! ```
//!
//! Bus over RabbitMQ:
//!
//! ```toml
//! [dependencies]
//! hexeract = { version = "0.2", features = ["bus-rabbitmq"] }
//! ```
//!
//! Both together:
//!
//! ```toml
//! [dependencies]
//! hexeract = { version = "0.2", features = ["outbox-postgres", "bus-rabbitmq"] }
//! ```
//!
//! # Feature matrix
//!
//! | Feature | Enables | Pulls |
//! | --- | --- | --- |
//! | `core` | Cross-cutting primitives (`MessageId`, `CorrelationId`, `HandlerContext`) | [`hexeract_core`] |
//! | `outbox` | Backend-agnostic outbox traits | [`hexeract_outbox`] |
//! | `outbox-postgres` | PostgreSQL outbox backend | [`hexeract_outbox`] + [`hexeract_outbox_postgres`] |
//! | `bus` | Backend-agnostic bus traits | [`hexeract_bus`] |
//! | `bus-rabbitmq` | RabbitMQ bus backend | [`hexeract_bus`] + [`hexeract_bus_rabbitmq`] |
//! | `mediator` | In-process mediator (v0.3.0 placeholder) | [`hexeract_mediator`] |
//! | `macros` | Procedural macros (v0.3.0 placeholder) | [`hexeract_macros`] |
//!
//! Every feature transitively enables `core`, so a downstream user
//! who picks `outbox-postgres` automatically has access to
//! `hexeract::core::HandlerContext`.
/// Cross-cutting primitives shared by every feature module.
///
/// Re-export of [`hexeract_core`].
pub use hexeract_core as core;
/// Backend-agnostic outbox traits.
///
/// Re-export of [`hexeract_outbox`].
pub use hexeract_outbox as outbox;
/// PostgreSQL outbox backend.
///
/// Re-export of [`hexeract_outbox_postgres`].
pub use hexeract_outbox_postgres as outbox_postgres;
/// Backend-agnostic bus traits.
///
/// Re-export of [`hexeract_bus`].
pub use hexeract_bus as bus;
/// RabbitMQ bus backend.
///
/// Re-export of [`hexeract_bus_rabbitmq`].
pub use hexeract_bus_rabbitmq as bus_rabbitmq;
/// In-process mediator (placeholder shipped in v0.3.0).
///
/// Re-export of [`hexeract_mediator`].
pub use hexeract_mediator as mediator;
/// Procedural macros (placeholder shipped in v0.3.0).
///
/// Re-export of [`hexeract_macros`].
pub use hexeract_macros as macros;