salati/models/
high_latitude_rule.rs

1use clap::ValueEnum;
2
3use crate::astronomy::unit::Coordinates;
4use crate::constants::is_high_latitude;
5
6#[derive(PartialEq, Debug, Copy, Clone, ValueEnum)]
7pub enum HighLatitudeRule {
8    MiddleOfTheNight,
9    SeventhOfTheNight,
10    TwilightAngle,
11}
12
13impl Default for HighLatitudeRule {
14    fn default() -> HighLatitudeRule {
15        HighLatitudeRule::TwilightAngle
16    }
17}
18
19impl HighLatitudeRule {
20    pub fn recommended(coordinates: Coordinates) -> Self {
21        match is_high_latitude(coordinates, None) {
22            true => HighLatitudeRule::SeventhOfTheNight,
23            false => HighLatitudeRule::MiddleOfTheNight,
24        }
25    }
26}