1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//! Traits for interpreting waveform parameter types as higher-kinded type constructors.
//!
//! You probably don't need the machinery in this module unless you're trying to do some abstraction
//! over all generic waveforms, and there isn't much you can usefully do with that. However, it
//! powers some implementation details of waveform sampling, so we expose the machinery in case it's
//! useful.
use ;
/// A trait representing all builtin waveform parameter types that themselves take a generic
/// `WaveformData` parameter: [`Flat`][super::builtin::Flat],
/// [`Gaussian`][super::builtin::Gaussian`], etc.
///
/// For every waveform type constructor `W`, this trait should be implemented for all `W<T>` at
/// once.
//
// Note for developers: Implementations of this trait are generated for all the generic built-in waveforms
// (e.g., [`super::builtin::Flat`]) by [`crate::waveform::builtin::macros::define_waveforms`]. These
// implementations are trivial wrappers around the inherent methods of the same name.
/// A trait representing all builtin waveform parameter types that themselves take a generic
/// `WaveformData` parameter, in the specific case where that parameter is [`Partial<_>`].
///
/// For every waveform type constructor `W`, this trait should be implemented for all
/// `W<Partial<T>>` at once.
//
// Note for developers: Implementations of this trait are generated for all the generic built-in waveforms
// (e.g., [`super::builtin::Flat`]) by [`crate::waveform::builtin::macros::define_waveforms`]. These
// implementations are trivial wrappers around the inherent methods of the same name.