Declarative processing primitives
Traits
The major traits are [Process]/[SplitProcess]/[Inplace]/[SplitInplace].
Composition
Impls can be cascaded in (homogeneous) [C; N] arrays/[C] slices, and heterogeneous
(C0, C1) tuples. They can be used as configuration-major or
configuration-minor (through [Minor]) or in [Add]s on complementary allpasses and polyphase banks.
Tuples, arrays, and Pairs, and Minor can be mixed and nested ad lib.
For a given filter configuration C and state S pair the trait is usually implemented
through [Split<&'a C, &mut S>] (created ad-hoc from by borrowing configuration and state)
or [Split<C, S>] (owned configuration and state).
Stateless filters should implement Process for &Self for composability through
[Split<Unsplit<&Self>, ()>].
Configuration-less filters or filters that include their configuration should implement
Process for Self and can be used in split configurations through [Split<(), Unsplit<Self>>].