1use crate::coord::{Cartesian, Equitorial, Horizontal, Polar};
6
7#[derive(Debug, Copy, Clone)]
13pub enum StarCoordinates {
14 Cartesian(Cartesian),
15 Equitorial(Equitorial),
16 Horizontal(Horizontal),
17 Stereo(Polar),
18}
19
20#[derive(Debug, Clone)]
26pub struct Star {
27 pub coordinates: StarCoordinates,
28 pub v_mag: f64,
29 pub name: String,
30 pub harvard: u32,
31}
32
33impl From<StarCoordinates> for Cartesian {
34 fn from(coord: StarCoordinates) -> Self {
35 match coord {
36 StarCoordinates::Cartesian(coord) => coord,
37 _ => panic!("Could not convert StarCoordinates to Cartesian!"),
38 }
39 }
40}
41
42impl From<StarCoordinates> for Equitorial {
43 fn from(coord: StarCoordinates) -> Self {
44 match coord {
45 StarCoordinates::Equitorial(coord) => coord,
46 _ => panic!("Could not convert StarCoordinates to Equitorial!"),
47 }
48 }
49}
50
51impl From<StarCoordinates> for Horizontal {
52 fn from(coord: StarCoordinates) -> Self {
53 match coord {
54 StarCoordinates::Horizontal(coord) => coord,
55 _ => panic!("Could not convert StarCoordinates to Horizontal!"),
56 }
57 }
58}
59
60impl From<StarCoordinates> for Polar {
61 fn from(coord: StarCoordinates) -> Self {
62 match coord {
63 StarCoordinates::Stereo(coord) => coord,
64 _ => panic!("Could not convert StarCoordinates to Polar!"),
65 }
66 }
67}