Skip to main content

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}