rstmt_core/intervals/
mod.rs1#[doc(inline)]
6pub use self::kinds::*;
7
8pub(crate) mod kinds;
9
10#[doc(hidden)]
11pub mod qualities;
12
13pub(crate) mod prelude {
14 pub use super::kinds::*;
15 pub use super::IntervalKind;
16}
17
18pub(crate) type IntervalTy = i8;
19
20pub trait MusicalInterval {
21 fn as_i8(&self) -> i8;
22}
23
24pub trait IntoInterval {
27 fn into_interval(self) -> Intervals;
28}
29
30pub trait IntervalKind {
33 private!();
34 fn kind(&self) -> Intervals {
36 Intervals::from_value(self.value())
37 }
38 fn value(&self) -> IntervalTy;
40}
41
42impl<I> IntoInterval for I
47where
48 I: Into<Intervals>,
49{
50 fn into_interval(self) -> Intervals {
51 self.into()
52 }
53}
54
55impl IntervalKind for Intervals {
56 seal!();
57 fn value(&self) -> IntervalTy {
58 self.value()
59 }
60}