wavecraft_dsp/combinators/mod.rs
1//! Processor combinators for chaining DSP operations.
2
3mod chain;
4
5pub use chain::Chain;
6
7/// Combines processors into a serial chain.
8///
9/// Single processor optimization:
10/// ```ignore
11/// Chain![MyGain] // Compiles to just `MyGain`, no wrapper overhead
12/// ```
13///
14/// Multiple processors:
15/// ```ignore
16/// Chain![Gain, Filter, Limiter] // Nests as Chain<Gain, Chain<Filter, Limiter>>
17/// ```
18#[macro_export]
19macro_rules! Chain {
20 // Single processor: no wrapping, zero overhead
21 ($single:ty) => {
22 $single
23 };
24 // Multiple: nest into Chain<A, Chain<B, ...>>
25 ($first:ty, $($rest:ty),+ $(,)?) => {
26 $crate::combinators::Chain<$first, $crate::Chain![$($rest),+]>
27 };
28}