rstmt_core/pitch/impls/
impl_pclass_repr.rs1use crate::pitch::pitch_class::PitchClass;
7
8use crate::pitch::{Flat, Natural, RawPitchClass, Sharp};
9
10impl<N> PitchClass<N>
11where
12 N: RawPitchClass,
13{
14 pub const fn natural(class: N) -> PitchClass<N, Natural>
16 where
17 N: RawPitchClass<Tag = Natural>,
18 {
19 PitchClass {
20 class,
21 kind: Natural,
22 }
23 }
24 pub const fn sharp(class: N) -> PitchClass<N, Sharp>
26 where
27 N: RawPitchClass<Tag = Sharp>,
28 {
29 PitchClass { class, kind: Sharp }
30 }
31 pub const fn flat(class: N) -> PitchClass<N, Flat>
33 where
34 N: RawPitchClass<Tag = Flat>,
35 {
36 PitchClass { class, kind: Flat }
37 }
38}
39
40impl<N> PitchClass<N, Natural> where N: RawPitchClass<Tag = Natural> {}
41
42impl<N> PitchClass<N, Sharp> where N: RawPitchClass<Tag = Sharp> {}
43
44impl<N> PitchClass<N, Flat> where N: RawPitchClass<Tag = Flat> {}