audiograph 0.5.1

An audio graph optimised for performance and limiting runtime allocations
use super::{Route, RouteGraph};
use generational_arena::Arena;
use sample::Sample;
use std::marker::PhantomData;

pub struct RouteGraphBuilder<S, R, C>
where
    S: Sample + Default,
    R: Route<S, C>,
{
    buffer_size: usize,
    __data: PhantomData<(S, R, C)>,
}

impl<S, R, C> RouteGraphBuilder<S, R, C>
where
    S: Sample + Default,
    R: Route<S, C>,
{
    pub fn new() -> Self {
        Self {
            buffer_size: 1024,
            __data: Default::default(),
        }
    }

    pub fn with_buffer_size(mut self, buffer_size: usize) -> Self {
        self.buffer_size = buffer_size;
        self
    }

    pub fn build(self) -> RouteGraph<S, R, C> {
        RouteGraph::build(Arena::new(), self.buffer_size)
    }
}

impl<S, R, C> Default for RouteGraphBuilder<S, R, C>
where
    S: Sample + Default,
    R: Route<S, C>,
{
    fn default() -> Self {
        RouteGraphBuilder::new()
    }
}