pub trait OscillatorState<F>:
Sized
+ From<Self::Waveform>
+ From<Direct<Self::Waveform>>
+ From<Self::WithoutDTC>
+ From<Self::WithoutWavetable>where
F: Float + FloatConst,{
type Waveform: Waveform<F>;
type WithDTC: OscillatorState<F, Waveform = Self::Waveform, WithDTC = Self::WithDTC> + From<Self> + From<Self::WithoutDTC> + From<DirectDTC<F, Self::Waveform>>;
type WithoutDTC: OscillatorState<F, Waveform = Self::Waveform, WithoutDTC = Self::WithoutDTC>;
type WithWavetable<const N: usize>: OscillatorState<F, Waveform = Self::Waveform, WithWavetable<N> = Self::WithWavetable<N>> + From<Self::WithoutWavetable> + From<Wave<F, Self::Waveform, N>>;
type WithoutWavetable: OscillatorState<F, Waveform = Self::Waveform, WithoutWavetable = Self::WithoutWavetable>;
type WithWaveform<W>: OscillatorState<F, Waveform = W, WithWaveform<W> = Self::WithWaveform<W>>
where W: Waveform<F>;
// Required methods
fn next(&mut self, theta: F, omega: F, rate: F) -> F;
fn waveform(&self) -> &Self::Waveform;
fn waveform_mut(&mut self) -> &mut Self::Waveform;
fn with_dtc(self, duty_cycle: F) -> Self::WithDTC;
fn without_dtc(self) -> Self::WithoutDTC;
fn with_wavetable<const N: usize>(self) -> Self::WithWavetable<N>;
fn without_wavetable(self) -> Self::WithoutWavetable;
fn map_waveform<W>(
self,
waveform: impl FnOnce(Self::Waveform) -> W,
) -> Self::WithWaveform<W>
where W: Waveform<F>;
// Provided methods
fn delete_cache(&mut self) { ... }
fn duty_cycle(&self) -> F { ... }
fn wavetable(&self) -> Option<WavetableView<'_, F>> { ... }
fn with_waveform<W>(self, waveform: W) -> Self::WithWaveform<W>
where W: Waveform<F> { ... }
}Required Associated Types§
type Waveform: Waveform<F>
type WithDTC: OscillatorState<F, Waveform = Self::Waveform, WithDTC = Self::WithDTC> + From<Self> + From<Self::WithoutDTC> + From<DirectDTC<F, Self::Waveform>>
type WithoutDTC: OscillatorState<F, Waveform = Self::Waveform, WithoutDTC = Self::WithoutDTC>
type WithWavetable<const N: usize>: OscillatorState<F, Waveform = Self::Waveform, WithWavetable<N> = Self::WithWavetable<N>> + From<Self::WithoutWavetable> + From<Wave<F, Self::Waveform, N>>
type WithoutWavetable: OscillatorState<F, Waveform = Self::Waveform, WithoutWavetable = Self::WithoutWavetable>
type WithWaveform<W>: OscillatorState<F, Waveform = W, WithWaveform<W> = Self::WithWaveform<W>> where W: Waveform<F>
Required Methods§
fn next(&mut self, theta: F, omega: F, rate: F) -> F
fn waveform(&self) -> &Self::Waveform
fn waveform_mut(&mut self) -> &mut Self::Waveform
fn with_dtc(self, duty_cycle: F) -> Self::WithDTC
fn without_dtc(self) -> Self::WithoutDTC
fn with_wavetable<const N: usize>(self) -> Self::WithWavetable<N>
fn without_wavetable(self) -> Self::WithoutWavetable
fn map_waveform<W>(
self,
waveform: impl FnOnce(Self::Waveform) -> W,
) -> Self::WithWaveform<W>where
W: Waveform<F>,
Provided Methods§
fn delete_cache(&mut self)
fn duty_cycle(&self) -> F
fn wavetable(&self) -> Option<WavetableView<'_, F>>
fn with_waveform<W>(self, waveform: W) -> Self::WithWaveform<W>where
W: Waveform<F>,
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.