quil_rs/
units.rs

1#[derive(Clone, Copy, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
2pub struct Cycles<T>(pub T);
3
4#[derive(Clone, Copy, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
5pub struct Radians<T>(pub T);
6
7impl From<Cycles<f64>> for Radians<f64> {
8    fn from(cycles: Cycles<f64>) -> Self {
9        Radians(cycles.0 * 2.0 * std::f64::consts::PI)
10    }
11}
12
13impl From<Radians<f64>> for Cycles<f64> {
14    fn from(radians: Radians<f64>) -> Self {
15        Cycles(radians.0 / (2.0 * std::f64::consts::PI))
16    }
17}