AUDIO
Source snapshot · 12 October 2026

API reference / ravet_graph::StageTuple

Trait StageTuple 

pub trait StageTuple<S: GraphSample>: Tuple<S> { }
Expand description

Sealed heterogeneous processor tuples of arity 1..8. Private-construction permits keep internal owner/wrapper operations inaccessible even when a generic caller has this public supertrait bound.

The internal store helper takes a mandatory private Permit argument that no external code can construct. Calling it with only the tuple therefore fails with E0061 (wrong argument count). That diagnostic exists only because of the Permit parameter: if the parameter were removed from store, the same call would type-check, so this negative example discriminates the safeguard.

use ravet_graph::StageTuple;
fn escape<T: StageTuple<f32>>(stages: T) {
    let _ = T::store(stages);
}

Positive companion: the generic bound itself is valid and usable.

use ravet_graph::StageTuple;
fn bound_is_valid<T: StageTuple<f32>>(stages: T) -> T {
    stages
}
let _ = bound_is_valid::<(ravet_gain::GainProcessor,)>;

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

§

impl<S: GraphSample, A: Processor<S> + Send + 'static, B: Processor<S> + Send + 'static, C: Processor<S> + Send + 'static, D: Processor<S> + Send + 'static, E: Processor<S> + Send + 'static, F: Processor<S> + Send + 'static, G: Processor<S> + Send + 'static, H: Processor<S> + Send + 'static> StageTuple<S> for (A, B, C, D, E, F, G, H)

§

impl<S: GraphSample, A: Processor<S> + Send + 'static, B: Processor<S> + Send + 'static, C: Processor<S> + Send + 'static, D: Processor<S> + Send + 'static, E: Processor<S> + Send + 'static, F: Processor<S> + Send + 'static, G: Processor<S> + Send + 'static> StageTuple<S> for (A, B, C, D, E, F, G)

§

impl<S: GraphSample, A: Processor<S> + Send + 'static, B: Processor<S> + Send + 'static, C: Processor<S> + Send + 'static, D: Processor<S> + Send + 'static, E: Processor<S> + Send + 'static, F: Processor<S> + Send + 'static> StageTuple<S> for (A, B, C, D, E, F)

§

impl<S: GraphSample, A: Processor<S> + Send + 'static, B: Processor<S> + Send + 'static, C: Processor<S> + Send + 'static, D: Processor<S> + Send + 'static, E: Processor<S> + Send + 'static> StageTuple<S> for (A, B, C, D, E)

§

impl<S: GraphSample, A: Processor<S> + Send + 'static, B: Processor<S> + Send + 'static, C: Processor<S> + Send + 'static, D: Processor<S> + Send + 'static> StageTuple<S> for (A, B, C, D)

§

impl<S: GraphSample, A: Processor<S> + Send + 'static, B: Processor<S> + Send + 'static, C: Processor<S> + Send + 'static> StageTuple<S> for (A, B, C)

§

impl<S: GraphSample, A: Processor<S> + Send + 'static, B: Processor<S> + Send + 'static> StageTuple<S> for (A, B)

§

impl<S: GraphSample, A: Processor<S> + Send + 'static> StageTuple<S> for (A,)

Implementors§