1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4
5#[cfg_attr(
6 feature = "serde",
7 derive(Serialize, Deserialize),
8 serde(rename_all = "camelCase")
9)]
10#[derive(Debug, Clone, PartialEq)]
11#[cfg_attr(not(feature = "unstable"), non_exhaustive)]
12pub struct Location {
13 pub longitude: f64,
14 pub latitude: f64,
15 pub elevation: f64,
16}
17
18#[cfg_attr(
19 feature = "serde",
20 derive(Serialize, Deserialize),
21 serde(rename_all = "camelCase")
22)]
23#[derive(Debug, Clone, PartialEq)]
24#[cfg_attr(not(feature = "unstable"), non_exhaustive)]
25pub struct Direction {
26 #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
27 pub timestamp: OffsetDateTime,
28 pub az: f64,
29 pub el: f64,
30}
31
32#[cfg_attr(
33 feature = "serde",
34 derive(Serialize, Deserialize),
35 serde(rename_all = "camelCase")
36)]
37#[derive(Debug, Clone, PartialEq)]
38#[cfg_attr(not(feature = "unstable"), non_exhaustive)]
39pub struct AzEl {
40 #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
41 pub start: OffsetDateTime,
42 #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
43 pub end: OffsetDateTime,
44 pub location: Location,
45 pub directions: Vec<Direction>,
46}